Назад | Перейти на главную страницу

Условный блок в 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

Это невозможно сделать.

Однако вы можете создать сценарий вроде /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

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