标题:[实践OK]每两周执行一次定时任务 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Wed, 27 Apr 2022 16:34:11 +0000 作者:jackxiang 地址:http://jackxiang.com/post/11309/ 内容: crontab这个定时工具单对于日期默认颗粒度是“单”,也就是单天,单周,单月等等,但是如果需要每双周发送一次消息,那么原生态的crontab就做不到了。 正确的写法是: 59 11 * * 5 expr `date +\%W` \% 2 > /dev/null || cd /opt/golangproject && ./DingdingBot > golang钉钉机器人.log 2>&1 echo $(date +\%W) #date +\%W获取当前的周数 17 expr `date +\%W` \% 2 #一般用于整数值计算使用expr做算术运算 1 这个规则的意思就是每双周的周五11点59分,启动DINGdingBot这个脚本。 先说expr,这是一个计算命令,一般用于整数值,比如expr 14 % 9,返回就是5。那么这个脚本的意思就很明白了,先用date +\%W获取当前的周数,如果可以被2整除,就是0,0可以执行后面的语句,如果不能被2整除,那么后面的语句也就不会执行。其实说白了,就是每周五的11点59分,判断一下当前周数是否是2的倍数,如果是就可以去执行脚本,如果不是就无视掉。 最后推荐一个好网站可以查看crontab的效果: https://tooltt.com/crontab-parse/ 另一个工具感觉弱一点,但是验证(50 9 8-14,22-28 * 5好像又是对的,和此文作者说的不符合。): https://www.matools.com/crontab ,不过这个网站只能看基础的crontab配置,想玩花就不行了。 摘自:https://brucewayne2099.github.io/2020/09/12/%E6%AF%8F%E4%B8%A4%E5%91%A8%E6%89%A7%E8%A1%8C%E4%B8%80%E6%AC%A1%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1/ Generated by Jackxiang's Bo-blog 2.1.1 Release