Home » Code » Linux下的定时任务

Linux下的定时任务

crontab_syntax

很多应用场景需要使用到定时任务。比如对于一个博客网站的热门标签,计算标签的热门程度值就适合使用定时任务,每分钟计算一次,或者10分钟等。在Linux下使用crontab来创建定时任务,以下是我折腾的过程。

一开始是直接编辑/etc/crontab,在后边添加一行:1 * * * * php /xxx/…/xxx.php,却发现根本没有反应。又使用crontab -e来编辑,坑爹的nano编辑器都不懂如何保存退出,一番摸索是编辑后才懂:修改后Ctrl+X退出,它会问是否保存,你需要回应一个大写的Y,键盘上也就是Shift+Y,接着是最让人摸不着的一步,下边各种M-D的,这要我怎么按?我又该选哪个?原来你不需要管下边的提示,直接修改要保存的名字,回车就行了!

crontab_nano

这样子保存后,通过crontab -l就能查看,但还是没有反应。特么又是最低一分钟执行一次,等一分钟才知道行不行,真让人抓狂。没办法,又编辑之,将最左边的1也改成*,这样就是5个*了,默认使用*也是1分钟的意思。这时候好像是有反应了,坑爹!

我要执行的是一个运行一个php cli脚本,传递的参数中带有命名空间,我知道使用一条\肯定是不行的,使用了两条\。添加后又等上一分钟,发现没有得到应有的结果。手动执行一次,OK的,实在是令人烦躁了。这个crontab有什么日志的么?它运行我的脚本到底输出了什么,我急切需要知道!其实在后边添加 “>>目标位置”就可以输出运行结果了。赶紧的打开结果文件,原来是命名空间没了,也就是我的两条\都没了,难道需要4条,试着加上了,果然OK了,只吐槽一个字:靠!

crontab_namespace

要查看crontab运行状态,可以通过:/etc/init.d/cron status。通过crontab -e编辑的文件保存到哪里了?它的位置在:/var/spool/cron/crontabs/root,最后一个是创建它的用户名。那上边nano保存时候的/tmp/crontab.semxpP/crontab是什么鬼?这个文件跟/etc/crontab又是什么关系?Linux的哲学真不是随便能懂的😭

一个小小一定时任务,从完全没整过到能运行,也能如此折腾人,还是太naive了!

参考链接:http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

One comment

  1. 完成之后,很有成就感

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Time limit is exhausted. Please reload CAPTCHA.