查看了很多相关crontab定时任务的博客,觉得很有道理,但也很乱!踩了不少坑之后,下定决心写一篇平滑度过Crontab入门的博客,不当之处万望指教。
问题:
我有一个叫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