proxy代理   soft软件   IT 业界特快   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
money理财   life生活   RSS聚合门户   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« [攻略] 制作自己的 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.
本blog WWW

Posted by windtear at November 12, 2005 3:56 PM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.