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

У меня есть php-скрипт с бесконечным циклом. Мне нужно, чтобы этот сценарий работал вечно. Итак, я бегу

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

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

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

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

5 ответов


nohup-это ваш друг.

nohup command &

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

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

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


nohup-это ваш друг.


Вы можете:

  • установить экран и выполните команду оттуда. экран-это постоянный сеанс терминала, который вы можете оставить запущенным.
  • напишите сценарий init/upstart (что бы вы ни использовали), чтобы он загружался при загрузке
  • используйте грушу lib system_daemon
  • используйте cron, если пакетная работа лучше соответствует сценарию (просто не забудьте проверить запущенные экземпляры перед запуском другого, параллелизм iff является проблемой)
  • Edit: или как все остальные а их брат только что сказал:--1-->

с помощью команды

команды nohup your_command &

Например
nohup phantomjs highcharts-конвертировать.Яш-хост 127.0.0.1 Порт 3003 &

здесь " phantomjs highcharts-конвертировать.JS-host 127.0.0.1-port 3003 " была моей командой