loading tweet...

cron用法说明

July 25th, 2006 | htmlor | linux, 技巧 | 4 Comments »

cron的用法老是记不住,索性写下来备忘。下文内容大部分是根据《Cron Help Guide》翻译而来,有些部分是自己加上的。

全文如下:

cron来源于希腊单词chronos(意为“时间”),是linux系统下一个自动执行指定任务的程序。例如,你想在每晚睡觉期间创建某些文件或文件夹的备份,就可以用cron来自动执行。

服务的启动和停止

cron服务是linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

/sbin/service crond start
/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload

以上1-4行分别为启动、停止、重启服务和重新加载配置。

要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可。

查看、编辑和删除

cron把命令行保存在crontab(cron table)文件里,这个文件通常在 /etc 目录下。每个系统用户都可以有自己的crontab(在 /var/spool/cron/ 下)。要查看当前用户的crontab,输入 crontab -l;要编辑crontab,输入 crontab -e;要删除crontab,输入 crontab -r。如当前是root身份,要查看/编辑/删除/某用户的crontab,只需在相应的命令后加上 -u USERNAME(如 crontab -e -u USERNAME)即可。crontab文件的默认编辑器是vi,可以输入 export VISUAL='editor' 更改默认编辑器。

cron服务每分钟不仅要读一次 /var/spool/cron 目录内的所有文件,还需要读一次 /etc/crontab 文件。配置这个文件也能让cron执行任务。使用crontab命令是对用户级任务的配置,而编辑 /etc/crontab 文件是对系统级任务的配置。

语法说明

以下是两个cron语句的例子(在 /etc/crontab 文件里)。前者用来晚间备份 /etc 目录,后者运行Analog程序处理服务器的统计信息。

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1
52 5 * * * root /usr/local/src/analog-5.32-lh/analog >> /dev/null 2>&1

以下是cron语句中的字段与字段说明:

字段 说明
1 分钟(0-59)
2 小时(2-24)
3 日期(1-31)
4 月份(1-12;或英文缩写Jan、Feb等)
5 周几(0-6,0为周日;或单词缩写Sun、Mon等)
6 用户名(执行命令时以此用户的身份)
7 要执行的命令(路径)

现在来看第一行:

12 3 * * * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

这条语句将在每天的凌晨3点12分(03:12)运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。>> /dev/null 2>&1 表示把所有标准输出发送到 /dev/null(linux的回收站),把标准错误输出(2)发送到和标准输出(1)同样的地方(即 /dev/null)。运行这行命令将不会产生任何输出。

这条语句可以变得稍微复杂一点:

30 15 13 6 1 * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

它将在6月13日周一的15:30运行 tar czf /usr/local/backups/daily/etc.tar.gz /etc 命令。

以下语句可以达到同样的效果:

30 15 13 Jun Mon * root tar czf /usr/local/backups/daily/etc.tar.gz /etc >> /dev/null 2>&1

如果你想以用户joey的身份每小时的第15分钟运行某个程序,可以使用:

15 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

其中的星号(*)是通配符,表示cron将忽略这个字段。

如果你想每两小时就运行某个程序,可以在小时字段里使用 */2。它将会在2点,4点,6点……22点,24点运行。具体语句如下:

0 */2 * * * joey /usr/bin/somecommand >> /dev/null 2>&1

cron语句中还可以使用逗号(,)来指定多个时间。例如你想在每小时的15分和30分运行某个程序,可以在分钟字段使用 15,30

15,30 * * * * joey /usr/bin/somecommand >> /dev/null 2>&1

如果你想在每月的第一周(即1号到7号)每天的指定时间运行某个程序,可以在日期字段使用 1-7

15,30 */2 1-7 * * joey /usr/bin/somecommand >> /dev/null 2>&1

这条语句将在每月的第1-7日每两小时的15分和30分(02:15,02:30……22: 15,22:30等)运行 /usr/bin/somecommand 命令。

如果你想在每天的16:18执行一个脚本集合,可以把所有要执行的脚本放到一个目录中(如 /home/username/cron),可以使用:

18 16 * * * root run-parts /home/username/cron >> /dev/null 2>&1

如果你想保存某个程序的输出结果, 可以把 >> /dev/null 2>&1 替换为 >> /home/user/somecommand.log 2>&1

总结

  • 查看当前用户的cron配置,使用 crontab -l
  • 编辑当前用户的cron配置,使用 crontab -e
  • 删除当前用户的cron配置,使用 crontab -r
  • 以root身份查看/编辑/删除某用户的cron配置,在命令后加上 -u USERNAME
  • 配置系统级的任务,编辑 /etc/crontab 文件

(完)


我足球的“启蒙老师”博格坎普正式告别

July 23rd, 2006 | htmlor | 足球 | 4 Comments »

北京时间7月22日23:45(英国当地时间16:45),博格坎普的告别赛在阿森纳新落成的酋长体育场进行,“冰王子”正式告别足坛。

老实说,在98年之前,我对足球比赛几乎一无所知。当年的世界杯上,四分之一决赛中荷兰遭遇阿根廷,博格坎普接队友长传先扣过防守球员再从容挑射的致命一击,优雅毕现,惊艳绝伦,让正在高考阶段无意中看到这一幕的我热血沸腾,不能自已。原来足球比赛还能这么好看?!从此义无反顾地爱上足球,也永远的记住了这个名字:丹尼斯·博格坎普Dennis Bergkamp。从这个意义上讲,说博格坎普是我的足球“启蒙老师”,一点都不为过。

之后,就看他为阿森纳攻城拔寨,屡建奇功。看着他潇洒自如的跑动,优雅无比的传球,一剑封喉的射门,真是千金难换的享受。欣赏阿森纳,很大程度上是因为他在那儿。

唉,职业生涯20年,陪伴了我8年的丹尼斯,终于要说再见了。再也看不见你球场上的英姿,再也看不见你进球后的庆祝,再也不能为你的传世进球忘情欢呼了…… 让我衷心的说一句:谢谢你,丹尼斯,你给了我一段最经典最完美的足球记忆。

自此之后,足球大师又少一位。


feedburner的ip又被donews封了

July 23rd, 2006 | htmlor | web, 服务 | 4 Comments »

今天上feedburner添加一个在donews的blog地址,老是不成功。无奈给他们发了封信反映。几小时后收到回信,内容如下:

This is a long running issue with the donews.com domain with no end in sight. Donews.com is blocking our IP address – or more exactly they are allowing a connection attempt but then cutting it off midstream which is why you see the Connection Reset error.

We’ve made many attempts to contact somebody there but have thus far been unsuccessful. The only thing I can recommend is for you to try to talk to them about this issue.

大致意思说,这个问题已经很久了,一直没有解决。donews要不就是封feedburner的ip地址,要不就是允许连接然后忽然截断(这更不爽)。他们尝试了很多次联系donews未果,只能建议我告诉donews这个问题。

其实这个问题之前也有人说过,之后好像是好了。但为什么现在又出现了呢?donews的老大们,拜托你们赶紧解决吧。


Page 2 of 612345...Last »