有人可以帮助我构建 cron 表达式。我需要在一年中的所有星期六上午9:00运行我的工作,不包括一年中的第一个星期六。
我曾尝试使用以下表达式,但它不起作用..
0 0 9 ? 1 7#2,7#3,7#4 *, 0 0 9 ? 2-12 SAT *
0 0 9 ? 1 7#2,7#3,7#4 *
- 这意味着在1月份的第二,第三,第四周六上午9点开始工作。但这里的问题是它只在最后一个星期六(即7#4)。在一些教程中,我读到逗号意味着它考虑了所有的值,但令我惊讶的是它只考虑了最后一个值)
0 0 9 ? 2-12 SAT *
- 这意味着从2月到12月我需要在上午9点开始工作。
我需要以这样的方式组合这两个表达式,它应该满足我的要求。
提前致谢
答案 0 :(得分:0)
您需要在程序中进行比较,而不是在cronjob中。例如,在Unix shell脚本中:
#!/usr/bin/env bash
date=$(date +%a)
month=$(date +%m)
day=$($date +%e)
if [ "$date" = "Sat" -a "$month" = "Jan" -a "$day" -lt 8 ];then
echo "Doesn't run this script at 1st Saturday of the year."
exit
fi
# put rest script
将cronjob设置为仅在星期六上午9点运行
0 9 * * 6 YOUR_PROGRAM
%a locale's abbreviated weekday name (e.g., Sun)
%b locale's abbreviated month name (e.g., Jan)
%e day of month, space padded; same as %_d