У меня есть веб-страница, которая должна запускать некоторые задания в виде php-процессов в фоновом режиме. Кроме того, он должен иметь возможность идентифицировать каждый процесс, чтобы закрыть его позже. Ex. Worker1, Worker2 … Как это достигается? также как убить тех, кто занимается процессом? ОС – ubuntu. * Эти сценарии всегда работают в фоновом режиме, поэтому они сами не убиваются.
Вы можете помещать скрипты и другие задачи оболочки в фоновом режиме, используя 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: