Вираз Cron виконується 6 та 7 робочого дня


0

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

Наразі у мене є вираз cron, але це стосується лише 6-го, 7-го та 8-го днів місяця, незалежно від того, чи це робочий день чи ні.

Поточне вираз cron - 0 0/30 * 6-8 *?

Я спробував використовувати вираз найближчого робочого дня 0 0/30 * 6W *? але він не працює в діапазоні днів - як з 6W-8W .

Будь-яка допомога в цьому відношенні дуже цінується.

P.S: Не дивлячись на те, щоб зробити це за допомогою сценарію.


Чи можете ви зробити краще форматування?
Toto

Відповіді:


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=${1:-$(date '+%Y-%m-%d')}

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-{01..31}; 
    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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.