Условный блок в crontab

Условный блок в crontab

Можно ли поместить оператор "if" в пользовательский crontab, или есть другой разумный способ организовать множество условных заданий cron? С точки зрения конечного пользователя, было бы проще всего, если бы он мог использовать обычный crontab и просто помещать свои записи между двумя строками, если это возможно.

В идеале что-то вроде:

if [ something ]; then
* * * * * /usr/bin/php /path/to/file.php
0 0 * * * /usr/bin/php /path/to/file2.php
*/5 * * * * /root/script.sh
fi

решение1

Сделать это в точности невозможно.

Однако вы можете создать скрипт вроде этого /usr/local/bin/check_live, который завершается с кодом состояния 0, если сервер в данный момент активен, и ненулевым кодом, если нет.

Затем вы можете иметь такие строки crontab:

* * * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file.php
0 0 * * * /usr/local/bin/check_live && /usr/bin/php /path/to/file2.php
*/5 * * * * /usr/local/bin/check_live && /root/script.sh

решение2

Я бы не рекомендовал помещать его в файл crontab. Вместо этого создайте скрипт, в котором вы зададите свои условия, а затем поместите его в файл crontab. У вас будет гораздо более чистая и организованная настройка.

Связанный контент