Crontab 每两周执行一次

Crontab 每两周执行一次Crontab每两周执行一次香港硅谷Crontab每两周执行一次   作者:TsungHao   13-Apr-09   Linux    浏览次数:1826   | 评论↓Tweet今天被问到一个问题:Crontab如何设定两周执行一次.   问题假设:每个月"第1,3周"的"星期一早上6点"要执行"ls/tmp"的指令.原本想想…

Crontab 每两周执行一次 – – 香港硅谷

Crontab 每两周执行一次

    作者: Tsung Hao

    13-Apr-09

    Linux

     浏览次数: 1826

    |  评论 ↓

Tweet

今天被问到一个问题: Crontab 如何设定两周执行一次.

    问题假设: 每个月 “第 1, 3 周” 的 “星期一 早上6点” 要执行 “ls /tmp” 的指令.

原本想想应该是直接设定 “0 6 1-7,15-21 * 1” 就可以了, 结果 1-7, 15-21 和 星期一也都会跑.

    man 5 crontab # 找到下述解释

        Note: The day of a command’s execution can be specified by two fields — day of month, and day of week.   If  both fields  are  restricted (i.e., aren’t *), the command will be run when either field matches the current time.

        For example,

        “30 4 1,15 * 5” would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.

        注: weekday 和 day 这两栏很容易造成混淆, 假如两栏同时都被指定时, 只需满足其中一栏就算符合.

目前想到的解法, 就是在程式判断, 不然就是在 Crontab 设定时判断, 找了很多资料, 还没找到正确解法. (若有知道解法的, 请不吝指教.. Orz.)

解法

    Crontab 中设定: “0 6 1-7,15-21 * * if [ `date ‘+\%w’` = “1” ]; then ls /tmp;fi”

    注1: bash 里面直接用 “if [ `date ‘+%w’` = “1” ]; then ls /tmp;fi” 即可, 但是在 Crontab 中, “%” 是特殊字符, 要加上跳脱字符(escape character).

    注2: “date ‘+%w'” => 用数字显示星期几 (0~6 = 星期天~ 星期六)

    注3: “ls /tmp” 换成想要执行的指令即可.

相关解法

    找到解法看起来比较像, 但是看不懂是怎么设定的: Crontab Setting Ineffective

    上述采用这类的解法: biweekly schedule through cron – dBforums

相关网页

    Cron 详细写法: Crontab 的写法(@reboot, @yearly…)

今天的文章Crontab 每两周执行一次分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/4721.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注