#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-файл.