centos使用crontab定时执行python脚本
1,安装
yum install crontabs
2,使用
2.1,开始编辑
首先进入crontab的编辑模式,使用如下命令:
crontab -e
进入编辑模式之后,
按下键盘上的a
开始编辑,
使用上下左右按钮移动光标。直接在原有内容的后面回车,在新的一行上写自己的内容。
具体语法格式:
运行时间 + 命令 [+ 日志]
下面一一列出语法和注意事项:
2.2,语法格式
-
运行时间
需要5组符号,从左到右以此表示:
分 时 日 月 星期
符号可以使用数字,和特殊符号。
-
数字不用赘述了,需要注意的是星期中,1~6表示周一到周日,而周日还可以用 7 表示
-
特殊符号:
符号 含义 * 表示任意值 如: 30 12 * * * * 表示每天12:30 , 代表多个时间段分隔的意思,比如 30 10 1,2 * *
就代表,每月1,2日10:30- 代表时间范围之内的意思,比如 30 10-15 * * *
代表,10点到15点的30分都执行命令/n 代表每隔n单位时间执行一次的意思,比如 */30 * * * *
就代表,每隔 30分钟执行一次
-
-
命令
命令就是简单的执行pyton脚本的命令:
python(可能需要版本号) + 脚本绝对地址
注意这里要使用绝对地址,且文件后面要加后缀(不加能不能运行我没试过,或许可以)
我用corntab定时执行python脚本时,python命令要使用绝对路径,具体原因我也不知道。大家日志中如果出现:python:comman not defined的报错时也可以试一下。所以,测试能不能用最方便的方法就是保存日志了。
查看自己python的位置可以使用
whereis
命令:whereis python
找到自己的python位置,到时候正确输入就好。
-
日志
在
>
后加上你想要保存日志的文件的绝对地址,注意后面还要加上2>&1 &
注意后面不要加'
(撇号)
2.3,我的代码
我的需求是每天凌晨:00:03执行python脚本(/root/web/automatic/report.py)并将日志保存到(/root/web/automatic/log.log)
03 0 * * * /usr/local/bin/python3.7 /root/web/automatic/report.py > /root/web/automatic/log.log 2>&1 &
注意命令最后不要学最开始的一行命令后面加上'
(撇号)
我这里的python位置使用了绝对地址,且后面加了版本号,原因是我的系统里有三个版本的python(系统自带两个版本的python…),网上找教程想把默认python版本改为3.7,但是没成功。最后只能用这个方法了。倒也不是不能用,就是比较麻烦(pip命令也要使用pip3.7 。。。),有类似问题的可以试试这个办法…但是感觉还是修改默认版本比较优雅点。不知道有没有大神指教…
3,保存退出
作为一个没系统学过linux的菜鸟,当时编辑完我都不知道怎么保存退出,一通 ctrl + c
折腾半天没有用,硬是保存不了。最后终于找到正确打开方式了:
编辑完成后,按两次
ctrl + c
按提示输入
:qa
再按
:wq
即可保存退出
4,测试
最后可以通过
corntab -l
命令来查看当前的文件,检查是否修改成功。可以通过先将命令定时的时间设置为几分钟后,在日志中查看是否正常运行(python中要有print,或者报错也会有内容,否则成功运行后日志是空的,但是日志没有内容还是无法保证运行成功。所以建议脚本中加一些print,方便测试)。保证正常运行后,再将命令时间修改为自己原本想要设置的时间。