[ubuntu] crontab start script ook wanneer het niet moet?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • idef1x
  • Registratie: Januari 2004
  • Nu online
Op mijn ubuntu 18.04 systeem heb ik een crontab regel als volgt:

# m h dom mon dow user command
45 9 1-7 1,3,6,9,12 Tue root /root/script.sh

Dat zou volgens mij moeten betekenen dat het script om 09:45 wordt uitgevoerd op de 1e 7 dagen van de maand in de maanden januarie, maart, juni,september en december wanneer het een dinsdag is.

Oftewel draai elke 3 maanden op de 1e dinsdag van de maand.

Maar in werkelijkheid heeft hij nu ook al gisteren (woensdag) en vandaag (donderdag) gedraaid.
Ik heb ook de "dow" al eens in 2 veranderd (dinsdag is dag 2), maar hij blijft het script gewoon starten op een donderdag

Volgens de man pages en documentie zou dit zo toch wel moeten werken?

edit: het lijkt erop dat het "dom" en "dow" veld niet gelijktijdig mogen worden gebruikt. Weet iemand dat?

edit2: Laat maar...las over een belangrijk stukje van de man page heen:
Note: The day of a command's execution can be specified by two fields - day of month, and day of week. If both fields are restricted (ie, aren't *), the command will be run when either field matches the current time. For example,
"30 4 1,15 * 5" would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.

[ Voor 28% gewijzigd door idef1x op 06-06-2019 10:35 . Reden: toevoeging ]

Beste antwoord (via idef1x op 27-06-2019 14:03)


  • Kees
  • Registratie: Juni 1999
  • Laatst online: 16:45

Kees

Serveradmin / BOFH / DoC
In dat geval zou ik in het script iets zetten als:
[[ $( date '+%u') != 2 ]] && exit
Dan draait hij wel maar doet hij niets. Je kan het ook in de crontab zelf opnemen:
45 9 1-7 1,3,6,9,12 * root [[ $( date '+%u') = 2 ]] && /root/script.sh

maar dan moet er geloof ik nog wat escaping gebeuren op de %

[ Voor 3% gewijzigd door Kees op 06-06-2019 12:48 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 16:45

Kees

Serveradmin / BOFH / DoC
In dat geval zou ik in het script iets zetten als:
[[ $( date '+%u') != 2 ]] && exit
Dan draait hij wel maar doet hij niets. Je kan het ook in de crontab zelf opnemen:
45 9 1-7 1,3,6,9,12 * root [[ $( date '+%u') = 2 ]] && /root/script.sh

maar dan moet er geloof ik nog wat escaping gebeuren op de %

[ Voor 3% gewijzigd door Kees op 06-06-2019 12:48 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


Acties:
  • 0 Henk 'm!

  • idef1x
  • Registratie: Januari 2004
  • Nu online
Ik heb het nu zo in mijn crontab staan, wat ook werkt:
0 8 1-7 1,3,6,9,12 *  root  if [ $(date +\%u) -eq 2 ]; /root/script.sh 1>/dev/null 2>&1; fi



De jouwe is nog netter, maar kreeg op die manier nog errors over [ oid..had er denk ik te weinig als ik jouw regel bekijk.
Dank!