Я хочу запускать cron каждые 5 минут, но я не хочу, чтобы запускался следующий cron, если предыдущий еще не завершился.
Что с этим можно сделать? Есть ли какие-нибудь инструменты для этого?
Спасибо
Использовать стадо.
flock -n /path/to/lockfile -c "command_you_want_to_run"
Вы можете использовать команду run-one. Он автоматически создает файл блокировки для выполняемой команды.
run-one rsync -a mirror.kernel.org::everything /my/hd
Поведение похоже на flock, но синтаксис более понятен. Обратной стороной является то, что вам может потребоваться установить команду для ее использования. Также особое внимание следует уделить изменению командной строки, когда изменяется командная строка, изменяется и имя файла блокировки.
Cron не поддерживает какие-либо типы рабочих зависимостей. Введенные вами записи выполняются, когда это указано.
Вам нужно будет ввести простую схему блокировки. Помещение данной команды или набора команд в сценарий оболочки, содержащий схему блокировки.
Или, как это делают более крупные сайты, установите какие-нибудь приложения для планирования заданий и используйте их для запуска приложений с условиями.