ubuntu定时执行任务crontab的使用
先来说下场景,需要写一个爬虫,定时从某个接口地址获取数据,然后存入本地数据库。
因此就需要一个可定时执行的东西,之前在the5fire的知识体系中除了可以在数据库中定时执行某个存储过程或者sql语句,如何在系统中定时执行某个任务还没有概念。
于是,请教了同事。知道在ubuntu中,准确的说是在linux中,有这么东西——crontab,专门用来定制执行任务。简单解说一番,就会用了。
虽然这个东西比较简单,但为了保证知识体系的完整,还是要查查crontab是个什么。
crontab单词的意思是:定时任务。
看看百科定义[完整定义]:
通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
有了上面的概念,再来看crontab的使用就会清晰些。
既然是系统每分钟都要检查一下,那么必然要有一个检查的依据,如配置文件或者什么的。
还是来看看百科:
crontab文件的每一行均遵守特定的格式,由空格或tab分隔为数个领域,每个领域可以放置单一或多个数值。
好了,开始使用了。估计有些人从定义就知道他要怎么用了。不过我还是想记录下。
使用步骤:
1、终端运行crontab -e [解释:编辑配置文件]
2、选择你要用的编辑器,一般人会选择vi。
3、此时配置文件已打开,只需要按照他的格式写配置即可。
好吧,简单到我都觉得。。
举个例子:
在我的home目录下有一个python脚本,helloworld.py
print 'hello world by crontab!'
我想要这个脚本在每天的早上7点30执行。
因此这个 任务的crontab配置文件就是:
30 7 * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
简单解释下,这个配置的意思就是在每天的7:30用python运行我的家目录下的testcrontab.py文件,并将输出内容输出到testcrontab.log中,后面那个2>&1的意思是把错误的输出也输出到标准输出(2表示错误,2>表示错误输出,&表示等同于,1表示正确),因此如果运行出错也会把错误输出到之前定义的log中。
另外关于合适执行命令还有些要说。
上面只是定时几点执行,那么我怎么设置它按照某一频率执行。比如每分钟执行依次。
对应的配置就是
*/1 * * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
再来一个场景,我想在每天的早上六点到八点之间,每隔3分钟执行一次的配置怎么写:
*/3 6-8 * * * python /home/the5fire/testcrontab.py >> /home/the5fire/testcrontab.log 2>&1
到此应该都会使用了吧,五个星号表示不同的执行单位(分、时、日、月、年),而那个反斜线表示频率。
建议继续学习:
- crontab异常,无法自动运行 (阅读:3337)
- linux下计划任务crontab学习笔记 (阅读:3066)
- SHELL TIPS: rsync 和 crontab 变量 (阅读:2926)
- Linux cron运行原理 (阅读:2441)
- crontab用法说明 (阅读:2051)
- 实用命令行工具详解(五)—crontab (阅读:2006)
- 一句话crontab实现防ssh暴力破解 (阅读:2329)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:胡阳 来源: the5fire的技术博客
- 标签: crontab
- 发布时间:2012-12-16 23:46:42
- [66] Go Reflect 性能
- [65] Oracle MTS模式下 进程地址与会话信
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则