我在第一个星期五晚上的每个月都有cronjob 我使用了下面提到的条目
00 20 1-7 * Fri [ "$(date '+\%a')" = "Fri" ] && $HOME/path/to/my/script.sh > /dev/null 2>&1
如果星期五在1月7日到7日之前,这个条目应该运行我的脚本,但我的脚本即使在7日之后(即在该月的所有星期五)也会被执行。 请建议如何解决它。
答案 0 :(得分:1)
这是因为当您指定月中的某一天和星期几时,当这些约束条件为真时,cron将执行该作业。从crontab(5)的手册页:
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 (i.e.,
aren't *), the command will be run when either field matches the cur‐
rent 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.
在cron中没有直接的方法来执行您想要的操作,但是cron : how to schedule to run first Sunday of every month通过使用cron来运行您的脚本来描述解决方法,例如每个星期五,然后在脚本中计算,如果月中的日期在1-7范围内,并且只有在这种情况下才会继续。
回应关于使用5而不是Fri来指定星期几的评论:使用Fri是可以的,正如手册页所说:
Months or days of the week can be specified by name.