Свой вариант cron, запускающий процессы чаще одного раза в минуту
03.04.2024
Во время работы возникла потребность запускать некоторые процессы по расписанию в ОС Линукс чаще, чем один раз в минуту. Как обычно, сначала появилась мысль сделать все красиво и правильно: создать свой сервис, который будет запускать процессы с установленной частотой. Но, к счастью, победил принцип KISS, и дело завершилось написание небольшого bash скрипта, который сам запускает процессы с нужной частотой.
Принцип работы скрипта прост до неприличия:
- Скрипт запускается из cron‘а каждую минуту на случай, если в очередной итерации своей работы он по какой-либо причине "рухнет". При этом при запуске скрипта в нем происходит проверка, не запущен ли он уже. Если запущен, то скрипт прекращает свою работу с кодом возврата 1 (или любой до 255)
- При первом успешном запуске скрипта, запускается бесконечный цикл, в котором запускаются нужные команды с обязательным амперсандом в конце строки, чтобы запускать команды в фоне параллельно. В конце цикла делается нужная пауза, в примере 10 секунд. Команды при этом могут продолжать выполняться в фоне, и задача, учитывать их состояние при запуске во время следующей итерации цикла, возлагается на автора запускаемых команд (скрипта).
Нужно отметить, что особой точности запуска команд через равные интервалы нет, но для моего случая это было и не нужно.
Также, как написано к комментариях в шапке скрипта, чтобы изменения, внесенные в него, вступили в силу, нужно убить его запущенный процесс, чтобы он запустился заново.