Выражение Cron для игнорирования 1-й субботы года и запуска по всем субботам года

Может ли кто-нибудь помочь мне в создании выражения cron. У меня есть требование, согласно которому мне нужно запускать свою работу по всем субботам в 9:00 в году, кроме 1-й субботы года.

Я пробовал с приведенным ниже выражением, но оно не работает.

0 0 9 ? 1 7#2,7#3,7#4 *, 0 0 9 ?  2-12 SAT *
  • 0 0 9 ? 1 7#2,7#3,7#4 * - Это означает, что в январе месяце я запускаю свою работу в 9:00 утра по 2-й, 3-й, 4-й субботам. Но проблема здесь в том, что он берет только последнюю субботу (т.е. 7 # 4). В некоторых учебниках я читал, что запятая означает, что учитываются все значения, но, к моему удивлению, учитывается только последнее значение)

  • 0 0 9 ? 2-12 SAT * - Это означает, что с февраля по декабрь мне нужно работать в 9 утра.

Мне нужно объединить эти 2 выражения таким образом, чтобы они удовлетворяли моим требованиям.

Заранее спасибо


person user3500543    schedule 12.04.2014    source источник


Ответы (1)


Вам нужно поместить сравнение в вашу программу, а не в cronjob. Например, в сценарии оболочки Unix:

#!/usr/bin/env bash

date=$(date +%a)  
month=$(date +%m)
day=$($date +%e)  

if [ "$date" = "Sat" -a "$month" = "Jan" -a "$day" -lt 8 ];then
  echo "Doesn't run this script at 1st Saturday of the year."
  exit
fi

# put rest script

настроить cronjob на запуск только в 9 утра в субботу

0 9 * * 6 YOUR_PROGRAM

Объяснение:

  %a   locale's abbreviated weekday name (e.g., Sun)
  %b   locale's abbreviated month name (e.g., Jan)
  %e   day of month, space padded; same as %_d
person BMW    schedule 12.04.2014