Как найти идентификатор процесса по его пути с помощью shell_exec

#php #linux #cron

#php #linux #cron

Вопрос:

Мне нужно предоставить моим пользователям способ остановить их задачу cron, чтобы она могла перезапуститься после 5-минутного цикла.

Я думаю, мне нужно использовать shell_exec , чтобы вернуть процессы обратно, а затем завершить конкретный процесс. Единственный способ, которым я смогу отличить этот процесс от других, запущенных на сервере, — это пути, т.е. php /home/sconmod/public_html/**URN**/Includes/System/CronTask.php .

Кто-нибудь знает способ, которым я могу получить идентификатор процесса процесса, сопоставив путь?

Спасибо.

Комментарии:

1. Извините, я не понимаю, что вы имеете в виду.. У них всегда будет этот путь, если вы это имеете в виду.

2. Да, у меня есть полный контроль над исходным кодом, поэтому я могу делать что угодно. Хм, я думаю, я мог бы сохранить идентификатор процесса при запуске скрипта, а затем прочитать его обратно и остановить, когда пользователь нажмет «перезапустить» на этой заметке…

3. Можете ли вы опубликовать это как ответ, и я пометю это как ответ, поскольку вы дали мне идею 🙂

Ответ №1:

Обычным способом решения этой проблемы является PID-файл. Запишите идентификатор процесса задания cron в файл в известном расположении при запуске задания и удалите файл, когда задание закончится. Если вам нужно завершить процесс до его завершения, просто прочитайте PID из файла и завершите процесс. Вы захотите включить некоторую обработку сигналов в задания cron, чтобы они должным образом очищали свои PID-файлы, хотя вы не хотели бы отправлять SIGTERM неправильному процессу только потому, что кто-то оставил устаревший PID-файл.