Cron 每月的第二个星期三运行一次吗?

Cron 每月的第二个星期三运行一次吗?

我需要找到一种方法来安排一项任务,以便它每月第二个星期三运行。这可能吗?

答案1

我的 crontab 手册页(遗憾的是我在网上找不到)给出了以下示例:

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

使其适应您的目的...

0 4 8-14 * *    test $(date +\%u) -eq 3 && job.sh

答案2

[对于 CentOS 7 服务器,这似乎是适合我的语法。请注意and周围的空格]。我花了一段时间才弄清楚。

test.sh这将在每月第二个星期三的 13:07 / 下午 1:07运行文件。(0=星期日,1=星期一,2=星期二,3=星期三,等等。)

07 13 8-14 * * [ `date +\%u` = 3 ] &&  /root/scripts/test.sh

答案3

基于答案是,你可以这样做:

00 12 * * Wed expr `date +\%d` \> 7 \& `date +\%d` \< 15 >/dev/null && runJob.sh

答案4

单独使用 cron 是不可能的,但你可以每周调用一次执行测试的脚本:

在 crontab 中,每周三 12:00 运行 second_wed.sh:

0 12 * * 3 /home/you/bin/second_wed.sh

在second_wed.sh中:

#!/usr/bin/env bash

#get day of month
day_of_month=`date +%d`

#if this day is between 7th and 15th day of the month = 2nd week
if [ $day_of_month -gt 7 -a $day_of_month -lt 15 ]; then
  # Call your program here instead of 'ls'…
  ls
fi

相关内容