
Я пытаюсь написать расписание cron для запуска задания в четверг перед вторым понедельником месяца. Пока у меня это
0 0 8 ? * MON#2
Но это происходит во второй понедельник месяца. Есть ли способ вернуться на четыре дня назад с того времени до предыдущего четверга?
Например, в сентябре 2016 года второй понедельник месяца — это 12-е число месяца. Поэтому я хотел бы запланировать запуск на предыдущий четверг, который будет 8-м числом месяца.
решение1
Я не думаю, что вы можете сделать это в cron. Может быть, 0 0 * * 4
вам следует запускать скрипт каждый четверг и в этом скрипте вы можете проверить, является ли это четвергом перед вторым понедельником месяца.
решение2
0 0 * * 4 [ $(date +\%d) -ge 4 -a $(date +\%d) -le 10 ] && run-script
Запустите запись crontab по четвергам (здесь, в полночь любого дня месяца и любого месяца), которая использует test ( [
) и date
проверяет, является ли день месяца 4..10 включительно. Если это так, запустите любой скрипт, который вам нужен.