Повторение скрипта каждые 5 секунд без перекрытия существующих запусков с crontab и watch

Я знаю, что crontab может планировать задачи только с точностью до минуты, и чтобы запланировать что-то чаще, чем 60 секунд, необходимо выбрать другой метод. Насколько я понимаю, часы будут ждать завершения процесса, прежде чем начинать другой. Можно ли совместить crontab и часы, или это действительно ужасная идея?

* * * * * / usr / bin / flock -n /tmp/script.lockfile / usr / bin / watch -n 5 / usr / bin / php /home/user/script.php

Концептуально мы используем flock для создания файла блокировки, чтобы предотвратить перезапуск cron команды watch, которая в противном случае запускалась бы каждые 60 секунд. Затем запускается Watch, и скрипт запускается каждые 5 секунд.

2
задан 31 October 2019 в 17:48
1 ответ

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

Хотя это случается, когда вы просите cron запустить flock -n , что будет всегда терпеть неудачу, так как watch будет работать вечно, сохраняя исходную блокировку.

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

0
ответ дан 3 December 2019 в 13:39

Теги

Похожие вопросы