一、crontab的安装
默认情况下,CentOS 7中已经安装有crontab,如果没有安装,可以通过yum进行安装。
yum install crontabs
二、crontab的定时语法说明
corntab中,一行代码就是一个定时任务,其语法结构可以通过这个图来理解。
字符含义如下:
* 代表取值范围内的数字
/ 代表"每"
- 代表从某个数字到某个数字
, 代表离散的取值(取值的列表)
一些常用的时间写法如下:
* * * * * //每分钟执行
* */4 * * * //每4小时执行
0 4 * * * //每天4点执行
0 12 */2 * * //每2天执行一次,在12点0分开始运行
* * * * 0 //每周日执行
* * * * 6,0 //每周六、日执行
5 * * * * //每小时的第5分钟执行
三、配置定时执行python脚本
由于是需要定时执行python脚本,所以应该使用如下命令:
python xxx.py
但是非常重要的一点是要用绝对路径写到命令,否则定时运行失败。因此我们需要先弄清楚python的具体路径。
我们在服务器上有python2和python3两个版本,通过如下命令来查看其安装路径。
# which python //查看系统默认安装的python2的路径
/usr/bin/python
# which python3 //查看自行安装的python3的路径
/usr/bin/python3
用如下命令查看当前系统中的定时任务列表
crontab -l # 列出现有定时任务
对crontab进行编辑
crontab -e # 进入 vim 编辑模式
在其中增加如下的内容(每周5,10:30执行的py脚本),注意python的版本用到了python3
30 10 * * 5 /usr/bin/python3 /var/lib/jenkins/workspace/Algorithm_autotest/Order_food.py
完成后,重启一下crontab的服务即可。
service crond restart
注意:在编写py脚本时,其中如果有对文件进行操作,也应该使用绝对路径。
文件绝对路径通过此命令找到
find / -name xxx.py
通过此命令查看运行状态
cat /var/log/cron
为啥 crontab 叫 crontab ?
据 Unix系统 cron 的作者 Ken Thompson 表示,cron 在希腊语里是一个代表时间 time 的前缀,tab 则表示 table,因此:
cron + tab = time table 即时间表