Использование nohup для непрерывного выполнения сценария

Я очень новичок в Linux и я использую его только для SSH на моем веб-сервере, используя Putty . У меня проблема:

В основном у меня есть 2 php скрипта. Один get_tweets.php постоянно прослушивает твиты на twitters Streaming API а другой – parse_tweets.php записывает их в db . Чтобы они работали, они должны постоянно работать.

Я использую следующие команды для их запуска в фоновом режиме и из того, что я видел, они работают большую часть дня, однако, когда я входил на свой компьютер утром, scripts остановились, и я должен запустить команды снова.

nohup php my_script.php > /dev/null &

Мне просто интересно, нормально ли это на основе команд, которые я использую, должны ли они работать бесконечно при использовании nohup а если нет, то в чем альтернатива? Работа CRON ?

Спасибо за помощь

3 Solutions collect form web for “Использование nohup для непрерывного выполнения сценария”

С nohup вы также должны перенаправлять ошибки. Следующий скрипт запуска команды с выходом и ошибкой, перенаправляющий на / dev / null:

 nohup php my_script.php >/dev/null 2>&1 & 

Но ваш сценарий может быть прерван некоторыми другими причинами (ошибка в скрипте, oom-killer и т. Д.). Таким образом, вы должны демонизировать его с помощью инициализации системы (если она поддерживает автоматический перезапуск – выскочка, systemd и некоторые другие могут это сделать). Или вы должны написать задачу cron для проверки и перезапустить свой скрипт, если он не запущен.

Возможно, вы хотите посмотреть, что происходит, а не перенаправлять вывод на /dev/null .

Я предлагаю вам открыть сеанс screen или tmux . Оба являются терминальными мультиплексорами , которые останутся в живых, даже если вы выйдете из системы.

Например (..) для информации

 $ screen $(inside screen-t1): ./get_tweets.php .... running first 

Теперь нажмите Ctrl-a c чтобы открыть новый терминал.

  $(inside screen-t2): ./parse_tweets.php ... running second 

Ctrl-a d позволяет отсоединить сеанс. При повторном входе в систему используйте screen -r

Примечание. Вы можете отобразить строку состояния на экране, чтобы визуализировать различные окна.

Если вы просто хотите убедиться, что ваш скрипт перезагрузится, когда он умрет, вы можете сделать что-то наподобие while true ; do php my_script.php ; done > /dev/null while true ; do php my_script.php ; done > /dev/null

Это будет ждать завершения my_script.php, а затем запустите его снова. Весь вывод будет отправлен в / dev / null

Если вы хотите использовать nohup, то вы должны сделать следующее

 $ echo 'while true ; do php my_script.php ; done > /dev/null' > ~/php_run_loop.sh $ chmod a+x ~/php_run_loop.sh $ nohup ~/php_run_loop.sh 

ПРИМЕЧАНИЕ. Если у вас есть ошибка или другая проблема в вашем скрипте php, это заставит ее работать снова и снова без ограничений. Это не изящное решение, но это решение.

BTW, cron хорош для запуска краткосрочного процесса по расписанию (каждые 5 минут или каждую неделю и т. Д.), Он не знает, как сохранить существующий процесс.

  • Не удалось согласовать алгоритм ssh
  • ssh с ключом rsa запрашивает пароль
  • Повторно подключить соединение с обратной связью ssh
  • Как узнать, что наводняет терминал?
  • scp с sshpass - удаленный каталог и файл с подстановочными знаками
  • Я SSH на сервер linux через putty, и у меня есть связанный диск на моей машине Windows. Как я могу получить доступ к файлам на других дисках?
  • Автоматически вводить пароль SSH без использования SSH-ключа, «ожидать», «sshpass» или Python
  • scp / path / to / local / file myusername@server.com создает новый файл в локальном каталоге?
  • Запустить сервер удаленно с помощью SSH
  • Как определить, не удалось ли ssh выполнить удаленную команду из-за изменения идентификатора хоста?
  • Почему SSH сообщает о возможности «человек-в-середине» с разными типами ключей?
  • ssh: выполнить команду перед входом в систему
  • Interesting Posts

    С двумя интерфейсами, как я могу сделать один маршрут по умолчанию, а другой – альтернативным?

    Количество блоков блока sysfs

    Как получить emacs на недавно установленной системе Fedora 20?

    Как открыть чашки в debian для всех клиентов

    Как я могу отфильтровать файлы с 1 ГБ или более с диапазоном дат.

    Почему существует множество проблем с перегревом и скоростью вращения вентилятора при установке Linux?

    Извлечение случайной выборки из N строк на основе шаблона

    Регулярные выражения в оболочке

    задержка записи в операционной файловой системе

    Возможно ли одновременно установить как Gstreamer 0.10, так и Gstreamer 1.0?

    Каталоги пользователей XDG

    извлеките архив tar в существующий каталог в git-bash

    Удобство использования / usr / share сегодня

    Принуждение к расширению глобального псевдонима частью слова

    Возможно ли отправлять электронные письма локально пользователю root

    Linux и Unix - лучшая ОС в мире.