【问题标题】:How to exclude a certain day of the week in cron, and only on a certain week如何在cron中排除一周中的某一天,并且只在某一周
【发布时间】:2011-08-10 15:39:16
【问题描述】:

基本上,我想在每个月的第一个、第二个、第四个,如果有的话,在每个月的第五个星期五运行一份工作。或者换句话说,除了第三个星期五之外的所有星期五。

编辑:这更面向 java,无法访问 bash 环境。

【问题讨论】:

  • 您能描述一下您正在运行的系统类型吗?如果您可以访问 cron,则很可能您可以访问 shell,并且可以编写一个 sh 脚本来执行此操作。

标签: cron


【解决方案1】:

您可以在脚本中手动检查它:

date "%u"

为您提供星期几(与 cron 中的 dow 字段相同)

要获得每个月的周数,您必须做一些时髦的事情。

date +"%V" 

给你一个月的星期,所以你必须看看

x=`date +"%V"`
y=`date +"%V" -d $(date +"%Y%m01")`
week_of_month=$((x-y))

week_of_month 从 0 开始,因此您需要检查它是否不是 2。

因此,在您的 cron 中,您将在每个星期五运行脚本,并在脚本顶部放置一个检查:

x=`date +"%V"`
y=`date +"%V" -d $(date +"%Y%m01")`
week_of_month=$((x-y))
if [ "$week_of_month" == "2" ]; then
    echo "Will not run second friday of the month"
    exit;
fi

【讨论】:

    猜你喜欢
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2016-03-01
    • 2011-05-24
    • 1970-01-01
    相关资源
    最近更新 更多