Crontab Query
I need to schedule a process/program every hour on the hour between 9am and 4pm on the 2nd through the 9th of each month except on Saturday and Sunday. So, I tried this entry:
0 9-16 2-9 * 1-5 ./myprog.sh
Unfortunately it runs outside of the 2nd through the 9th and still runs on Sat. through Sun.
Is there a way to do this (outside the program itself)?
-Frank
4 thoughts on - Crontab Query
Perhaps
0 9-16 * * 1-5 [[ $(date +%d) == 0[2-9] ]] && ./myprog.sh
Please replace ./ with full path to myprog.sh
jl
Hallo, doesn t it make more sense to start the script every hour and check all conditions in the script?
Ralf
Von meinem iPad gesendet
From the crontab(5) man page:
Note: The day of a command’s execution can be specified in the follow‐
ing two fields — ‘day of month’, and ‘day of week’. If both fields are
restricted (i.e., do not contain the “*” character), 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.
So it looks like it is going to run either time.
A systemd timer might be able to be more exclusive, but parsing the
‘systemd.time’ man page makes my head hurt.
—
Jonathan Billings
I prefer to develop the script standalone. The date/time restriction can be added in crontab or a separate script that does the date/time validation and calls the standalone script.
If the date/time checks are added to the script, I recommend adding an option to override the checks and forces execution of the script when needed.
Jon
—
Jon H. LaBadie jcu@labadie.us