Как убить предыдущий процесс cronjob при запуске нового? - PullRequest
0 голосов
/ 16 мая 2018

Не могу поверить, что я не нашел ответов на этот вопрос на сайте.

В любом случае, у меня есть задача cronjob, которую я хочу запускать каждую третью минуту.Если он не будет завершен, когда следующий будет запущен через 3 минуты, я хочу, чтобы текущий запущенный был убит.НЕ новый, чтобы ждать.Я новый должен быть запущен, но старый должен быть убит.Как мне это сделать?

Вот мой текущий код:

*/3 * * * * wget -O /dev/null http://mywebsite.com/wp-admin/admin-ajax.php?action=my_function

Кто-нибудь знает ответ?

1 Ответ

0 голосов
/ 16 мая 2018

Толстый и быстрый способ:

Посмотрите на идентификатор процесса (PID).

Измените процесс, чтобы поместить его PID во временный файл.Если ваш процесс называется fred, вызовите файл / var / tmp / fredpid или что-то в этом роде.

Таким образом, каждый раз, когда процесс запускается, он проверяет наличие временного файла, уже находящегося там.Конечно, вы должны закодировать эту функциональность, не забывая убедиться, что процесс удаляет временный файл в конце своего выполнения.

Грубо говоря, шаги следующие:

(1)Если / var / tmp / fredpid существует, зафиксируйте PID из файла

(2), чтобы уничтожить более старый процесс, выполняющийся под этим PID.

(3) Поместить текущий PID во временный файл.

(4) возобновить работу.

(5) работа завершена, удалить / var / tmp / fredpid

...