如何在周五的每个月运行crontab?

时间:2014-06-14 06:10:41

标签: linux crontab

我在第一个星期五晚上的每个月都有cronjob 我使用了下面提到的条目

00 20 1-7  * Fri         [ "$(date '+\%a')" = "Fri" ] && $HOME/path/to/my/script.sh > /dev/null 2>&1

如果星期五在1月7日到7日之前,这个条目应该运行我的脚本,但我的脚本即使在7日之后(即在该月的所有星期五)也会被执行。 请建议如何解决它。

1 个答案:

答案 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.