Crontab定时任务入门教程,实战例子
2017-05-27 10:02
239 查看
查看了很多相关crontab定时任务的博客,觉得很有道理,但也很乱!踩了不少坑之后,下定决心写一篇平滑度过Crontab入门的博客,不当之处万望指教。
可以看到:旧方法直接在命令行工作而新方法把命令行下面的操作写成了.sh文件然后再利用命令行去编辑Crontab文件,再在文件里指定路径调用这个.sh,进而来跑这个Python的脚本。
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
$ crontab -e
按自己需要,比如我需要每两分钟执行一次,在后面输入:
*/2 * * * *sh /home/sy/log_file/hello.sh2>>/home/sy/log_file/note.log
红色部分:定时;蓝色部分:需要执行的Python脚本位置;紫色部分:把错误log信息打印在文件note.log里面。
2、查看是否新建成功:
上述界面Ctrl+X退出,然后命令行输入:
$ crontab -l
可以查看自己输入的Crontab是否存在;
3、编写.sh文件
就好像自己子在命令行里面输入是一样的;
4、编写自己的test4.py文件:
可以看到:我的Python文件有很多print和最后会保存一个“temp7777.csv”的文件
5、开始执行crontab,命令行输入:
$ sudo service cron start
如果重新多次输入,会告诉你已经开启了
如果不成功,可以选择命令行输入:
$ sudo service cron restart
6、查看结果:
可以看到元本年空白的note.log文件多了一句错误信息:
这也说明原来.sh文件的source设置多余了;
还可以看到对应文件路径下多了我们想要的文件:
实验成功了!
7、如果希望原来的print信息也打印在note.log文件里面,可以再crontab 中进行设置:
输入改成:
*/2 * * * * sh /home/sy/log_file/hello.sh 1,2>>/home/sy/log_file/note.log
多加一部分黄色的1代表正常信息添加。
就这样:每两分钟,就有一堆121212121212传进去note.log文件
8、本机下面没有必要在.sh文件里面设置环境变量,但是对于服务器来讲——需要;
首先要查看本机所有环境变量:命令行输入:
$ env|more
选择你自己所需要的,加进去source那里,就可以了。。
问题:
我有一个叫test4.py的Python脚本,需要定时执行,实时更新数据,需要借助Crontab命令,来调用一个.sh写好的命令行的文件,进而执行我们的test4.py文件,实现定时执行的功能。原理框架:
我们查看Ubuntu下面的旧方法和新方法执行test4.py的Python脚本的原理上的不一样:可以看到:旧方法直接在命令行工作而新方法把命令行下面的操作写成了.sh文件然后再利用命令行去编辑Crontab文件,再在文件里指定路径调用这个.sh,进而来跑这个Python的脚本。
基础知识:
我们需要补充一些Crontab知识:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
1. 命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]2. 命令参数
-u user:用来设定某个用户的crontab服务;file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
3. crontab的文件格式
分 时 日 月 星期 要运行的命令第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
实例1:每1分钟执行一次myCommand
* * * * * myCommand
实例2:每小时的第3和第15分钟执行
3,15 * * * * myCommand
实例3:在上午8点到11点的第3和第15分钟执行
3,15 8-11 * * * myCommand
实例4:每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * myCommand
实例5:每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1 myCommand
实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
实战例子:
1、编辑crontab文件,命令行输入:$ crontab -e
按自己需要,比如我需要每两分钟执行一次,在后面输入:
*/2 * * * *sh /home/sy/log_file/hello.sh2>>/home/sy/log_file/note.log
红色部分:定时;蓝色部分:需要执行的Python脚本位置;紫色部分:把错误log信息打印在文件note.log里面。
2、查看是否新建成功:
上述界面Ctrl+X退出,然后命令行输入:
$ crontab -l
可以查看自己输入的Crontab是否存在;
3、编写.sh文件
就好像自己子在命令行里面输入是一样的;
4、编写自己的test4.py文件:
可以看到:我的Python文件有很多print和最后会保存一个“temp7777.csv”的文件
5、开始执行crontab,命令行输入:
$ sudo service cron start
如果重新多次输入,会告诉你已经开启了
如果不成功,可以选择命令行输入:
$ sudo service cron restart
6、查看结果:
可以看到元本年空白的note.log文件多了一句错误信息:
这也说明原来.sh文件的source设置多余了;
还可以看到对应文件路径下多了我们想要的文件:
实验成功了!
7、如果希望原来的print信息也打印在note.log文件里面,可以再crontab 中进行设置:
输入改成:
*/2 * * * * sh /home/sy/log_file/hello.sh 1,2>>/home/sy/log_file/note.log
多加一部分黄色的1代表正常信息添加。
就这样:每两分钟,就有一堆121212121212传进去note.log文件
8、本机下面没有必要在.sh文件里面设置环境变量,但是对于服务器来讲——需要;
首先要查看本机所有环境变量:命令行输入:
$ env|more
选择你自己所需要的,加进去source那里,就可以了。。
相关文章推荐
- 土人系列AS入门教程--实战篇
- 根据传智播客ibatis视频教程编写的入门例子
- 易语言新手入门教程第五课 - 计次循环命令讲解与实战
- mybatis实战教程(mybatis in action),mybatis入门到精通
- mybatis实战教程(mybatis in action),mybatis入门到精通
- 土人系列AS入门教程--实战篇
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【三】——Web Api入门
- java入门教程:网络通信例子(一)
- mybatis实战教程(mybatis in action),mybatis入门到精通
- Ruby On Rails系列从入门到精通实战教程 Ruby基础教程下载
- 根据传智播客ibatis视频教程编写的入门例子
- android编程开发入门实战例子–hello word
- SIP Servlet入门教程及例子
- java入门教程:网络通信例子(二)
- 无废话MVC入门教程十[实战二:用户管理]
- 硬盘数据恢复入门教程[四]----实战数据恢复篇
- iBatis.Net 入门例子 入门指南 入门教程
- C#写字板问题一二 —— C#+WinForm编程趣味入门实战-天轰穿.NET4趣味编程视频教程
- mybatis实战教程(mybatis in action),mybatis入门到精通(转)
- Ruby On Rails系列从入门到精通实战教程 Ruby基础教程下载