« [攻略] 制作自己的 alexa toolbar (IE 工具条) | Main | 重新捡起 Debian 从基本配置开始 »
November 12, 2005
crontab 中关于日期精确定位的一个注意事项
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。 https://windtear.net/archives/2005/11/12/000823.html http://windtear.net/archives/2005/11/12/000823.html crontab 条目共分为6项 依次是 分 时 日 月 周几 命令 field allowed values ----- -------------- minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sun, or use names) man 5 crontab 可以查看详细帮助 这里要写的就是关于 day of month 和 day of week 的事 如果想要精确到天 只能用二者之一 比如今天 2005-11-12 星期六 如果想要今天下午 17:00 执行一个命令关机 则可以写作 0 17 12 11 * /sbin/poweroff 这样每年的11月12日 17:00 的时候执行 /sbin/poweroff 这个命令 如果想要精确定位为2005年的11月12日 则可以把 /sbin/poweroff 改成脚本 用 shell perl python php 不管什么解释器 只要能判断日期 达到目的就行 很容易犯的错误是想当然的认为 今年的11月12日和明年的11月12日周几不同 再加上 weekday/day of week 不就进一步严格限制了 其实这正好错了 如果这么写的话 二者不是 and (&&) 的关系 而是 or (||) 的关系 也就是说只要满足条件之一就执行 所以刚才那条crontab如果写作 0 17 12 11 6 /sbin/poweroff 的话 则每个周六都执行 每年11月12日都执行 这样就是严重错误了 备注: 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 (ie, 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. |
Posted by windtear at November 12, 2005 3:56 PM