Как запустить бесконечно script в фоновом режиме на Linux?

У меня есть PHP script с бесконечным циклом. Мне нужно, чтобы этот script работал вечно. Итак, я запустил

php /path/to/script.php > /dev/null &

И он работает в фоновом режиме в моем текущем контексте безопасности пользователя. Но когда я закрываю окно терминала (отключение), конечно, CentOS Linux убивает мою программу.

Я вижу два догадки: запустите другого пользователя в фоновом режиме или создайте демон. Мне нужна помощь в каждой ситуации.

Спасибо большое!

Ответ 1

nohup - ваш друг.

nohup command &

Ответ 2

Я думаю, что общее решение этого вопроса - nohup:

nohup - это команда POSIX, чтобы игнорировать сигнал HUP (hangup), позволяя команде продолжать работать после выхода пользователя из системы, который выдает команду. Сигнал HUP (зависания) согласуется с тем, как терминал предупреждает о зависимых процессах выхода из системы.

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

Ответ 3

nohup - ваш друг.

Ответ 4

Вы можете:

  • Установите экран и запустите команду оттуда. screen - это постоянный сеанс терминала, который можно оставить запущенным.
  • Запишите init/upstart (все, что вы используете) script, чтобы он загружался при загрузке
  • Используйте грушу lib system_daemon
  • Используйте cron, если пакетная работа лучше подходит для сценария (просто не забудьте проверить запуск экземпляров перед запуском другого, iff concurrency является проблемой)
  • Править: или, как только все остальные и их брат только что сказали, nohup

Ответ 5

Использование команды

nohup your_command &

Например
nohup phantomjs highcharts-convert.js -host 127.0.0.1 -порт 3003 &

здесь "phantomjs highcharts-convert.js -host 127.0.0.1 -port 3003" была моей командой