Cron выражение для запуска на 6-й, 7-й и 8-й рабочий день

515
user3087291

Я создаю выражение cron, которое должно запускаться каждые 30 минут только в течение ряда рабочих дней, например: 6-го, 7-го и 8-го рабочих дней месяца.

В настоящее время у меня есть выражение cron, но оно работает только 6-го, 7-го и 8-го числа месяца, независимо от того, будет ли это рабочий день или нет.

Текущее выражение cron - 0 0/30 * 6-8 *?

Я пытался использовать выражение ближайшего рабочего дня 0 0/30 * 6W *? но это не работает в течение ряда дней - как от 6W-8W .

Любая помощь в этом отношении высоко ценится.

PS: не хочу делать это с помощью сценария.

0
Не могли бы вы сделать лучшее форматирование? Toto 6 лет назад 0

1 ответ на вопрос

0
Ярослав Рахматуллин

Вы не можете (или, по крайней мере, я недостаточно умен, чтобы понять, как это сделать).

На вкладке cron есть ограничения, которые позволяют вам выбрать день месяца и день недели .

Все рабочие дни будут днями недели 1-5, но этого недостаточно, потому что вам нужно сосчитать или выразить

6th, 7th, 8th day of (days-of-week:1-5) in this month 

Итак, вам нужен сценарий.

$ cat /home/jaroslav/tmp/workday-567.sh #!/bin/bash  jan01() { date +%s -d `date +%Y-01-01`; } december() { echo $(($(jan01) + 365*24*3600)); } day=`jan01`; december=`december`;  today=$  this_months_678th=$( while [ $day -lt $december ];do date '+%Y-%m-%d %B %A %u' -d@$day; let day=$day+86400;  done | sort -u | sed -e "/[67]$/d; /$(date '+%Y-%m')/!d" | sed -n -e '6p; 7p; 8p' )  if echo -e "$this_months_678th" | grep -q $today; then exit 0 fi exit 1 

Ноябрь 2018 года;

$ for i in 2018-11-;  do bash /home/jaroslav/tmp/workday-567.sh $i && echo run on $i; done  run on 2018-11-08 run on 2018-11-09 run on 2018-11-12 
Как насчет использования "6W", чтобы получить следующий рабочий день после 6-го; запустите скрипт, чтобы добавить запись crontab «* * / 30 *? * * * / script» и добавить запись для удаления этого crontab через 3 дня. Кажется проще. Вы можете поместить файл в /etc/cron.d/ вместо разбора crontab. pbhj 5 лет назад 0

Похожие вопросы