Я хочу запланировать запуск задачи за несколько секунд, минут, часов, дней или недель до указанного дня недели в конкретном месяце. Примеры:
Мне удобно настраивать cron / at для выполнения заданий в определенные дни, и я понимаю, что если я хочу работать по такого рода расписаниям, мне, вероятно, придется запускать скрипт вместе с cron.
Есть ли у кого-нибудь примеры того, как я могу это сделать?
Для вашего первого примера, с 8 утра за 7 дней до последнего вторника месяца, я бы сделал следующее:
0 8 * * 2 [[ $(date +%m) -eq $(date -d +7days +%m) ]] && [[ $(date +%m) -ne $(date -d +14days +%m) ]] && myscript
Это запускается в 8 утра каждый вторник (0 8 * * 2
), а затем скажите «если месяц через 7 дней будет таким же, как этот месяц» (т. е. это не тот последний Вторник месяца) и "если месяц через 14 дней не то же, что и в этом месяце "(т.е. это второй-последний вторник месяца), затем запустите myscript
.
Технически это может быть более эффективным - например, вы знать что второй-последний вторник месяца не может быть 1-м числом - но это только усложняет понимание. :) Кроме того, в зависимости от того, в какой именно оболочке cron запускается и т. Д., Могут потребоваться некоторые кавычки (+%m
может потребоваться "+%m"
), или вам может потребоваться избежать знака процента (т.е. +%m
может потребоваться +\%m
).
Обобщение этого трюка на другие дни и предварительные комбинации оставлено в качестве упражнения для читателя.