如何在 cron 中排除一周中的某一天,并且仅在某一周

发布于 2024-11-29 01:22:59 字数 105 浏览 0 评论 0原文

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

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

Basically, I want to run a job on the first, second, fourth, and if available, fifth friday of each month. Or in other words, all Fridays except for the third Friday.

Edit: this is more java oriented, there is no access to a bash environment.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

彩扇题诗 2024-12-06 01:22:59

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

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

You can manually check for it in a script:

date "%u"

gives you the day of the week (same as the dow field in cron)

To get the week number of each month, you have to do something funky.

date +"%V" 

gives you the week of the month, so you'd have to look at

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

week_of_month starts at 0 so you would want to check if it is not two.

So in your cron, you would run the script every friday, and put a check at the top of the script:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文