Как запустить несколько PHP-сценариев в фоновом режиме на Ubuntu?

1

У меня есть веб-страница, которая должна запускать некоторые задания в виде php-процессов в фоновом режиме. Кроме того, он должен иметь возможность идентифицировать каждый процесс, чтобы закрыть его позже. Ex. Worker1, Worker2... Как это достигается? также как убить тех, кто занимается процессом? ОС - ubuntu. * Эти сценарии всегда работают в фоновом режиме, поэтому они сами не убиваются.

  • 4
    Добро пожаловать в Stack Overflow, @Soheil Yahyaee. Я знаю, что это, вероятно, не то, что вы хотели увидеть, но здесь нам нравится видеть то, что вы попробовали, а затем мы можем подключиться и помочь вам. Попробуйте сами, опубликуйте код и сообщите нам, где вы застряли.
Теги:

1 ответ

2
Лучший ответ

Вы можете помещать скрипты и другие задачи оболочки в фоновом режиме, используя nohup в начале, и символ & в конце команды:

~$ nohup php script.php >> /var/tmp/script.log 2>&1 &

Обратите внимание, что с опцией 2>&1 вы перенаправляете вывод (стандартную ошибку и вывод) на стандартный вывод, а затем в файл для ведения журнала (здесь /var/tmp/script.log).

EDIT: с jobs команд вы можете перечислить процесс, который вы активируете в свою сессию (здесь 1797 - процесс pid):

~$ jobs -l
[1]+  1797 Running   nohup php script.php >> /var/tmp/script.log 2>&1 &

Вы можете отправлять сигналы процессу после обнаружения процесса pid. Чтобы убить "красиво" процесс (где ${PID} - это процесс pid):

~$ kill -SIGTERM ${PID}

Если процесс застрял, вы можете использовать сигнал SIGKILL (или -9). Обратите внимание, что SIGKILL нельзя перехватить, затем процесс немедленно прекращается без каких-либо операций "очистки" (закрытие временных файлов и т.д.). kill -9 ${PID} или kill -SIGKILL ${PID} следует использовать только как последний ресурс.

Вот некоторая теория:

Хороший курс о Gnu/Linux:

  • 0
    несколько экземпляров script.php должны быть запущены, и каждый из них имеет, например, имя пользователя. как их убить позже?
  • 0
    может быть, небольшая помощь о разделе "2> & 1"? Что это делает?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню