Можно ли поместить оператор "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. У вас будет гораздо более чистая и организованная настройка.