У меня есть установка cron для ежедневного выполнения скрипта bash в 22:00. У меня есть другая установка cron, которая запускается ежемесячно 1-го числа месяца. Оба крона запускают скрипт bash, и единственное отличие в скрипте bash - это аргумент, который они передают в базовую Java-программу (эмуляция запуска Java-программы из командной строки).
Проблема в том, что мне нужно как-то отключить ежедневный cron 1-го числа месяца, чтобы оба не пытались работать в один и тот же день. Возможно ли это сделать автоматически?
Я полагаю, я могу создать еще один скрипт bash, чтобы редактировать cron до 1-го, а затем снова после того, как все восстановится, но это кажется ... нечистым
shell-script
cron
SnakeDoc
источник
источник
Ответы:
Аналогично решению, предложенному @StephaneChazelas в комментариях, вы можете указать диапазон дней в 3-м поле в качестве диапазона для cron, который вы хотите запускать каждый день, кроме 1-го числа месяца.
Следующие две записи будут выполнять то, что вы после:
источник
Самый простой способ справиться с этим - просто ввести одну запись cron. Измените скрипт bash, чтобы проверить дату - если это 1-е число месяца, тогда вызовите java-программу с ежемесячными параметрами, иначе вызовите программу с ежедневными параметрами.
Изменение скрипта упрощает процесс, так как скрипт как документ будет лучше описывать происходящее, не требуя дополнительной информации в таблице cron.
Скриптовые моды могут выглядеть примерно так:
источник
Я думаю, используя целочисленное сравнение, если более правильно
date '+% d' возвращает 01, а не 1, поэтому использование сравнения строк == будет ложным
вместо
источник