因为项目需求需要在服务器上定时任务,进行扫描。
在linux上进行定时任务扫描,也就是需要需要 crontab ,而 python 中也有这个包,强大的 python。
下面一起来看看如何使用这个包吧。
安装
pip install python-crontab
使用
封装一个类,用来新增和清除定时任务:
下面这个是 python2.7 的操作,根据语法换成 3 就好了。
1 | # coding=utf-8 |
设置定时任务后:
下面可通过命令查看,是否创建成功:
crontab -l
注意点
上面的代码我是直接贴的网上的,但是也可以看懂,主要有两个注意点。
1
如果你的文件名是 crontab ,那么你引入包的时候会报错 from crontab import CronTab
2
crontab是很蠢的,你必须要把所有的路径都标注出来。
而所有的路径都需要体现在上面那个代码中的 cmmand_line 中。
比如,我的项目是 eosvoter 。我要想执行某一个python文件,需要执行下面的步骤
cd /root/eosvoter/monitor (我把执行代码放在这个目录下)
python3.7 dingTalkSend.py
只有这样我才能执行这个文件,所以,我也想对小伙伴说,要想正确的验证,你的命令是否能够执行,你可以到其他目录走一遍,然后,我的总命令就是
cd /root/eosvoter/monitor;python3.7 /root/eosvoter/monitor/dingTalkSend.py
我是验证过可以执行,然后,在cmmand_line 中添加相应的 str 。
然后我们使用
crontab -l
可以查看到
还有一点关于在 crontab 中如何分隔多个命令,其语法如下:
多个命令可以放在一行上,其执行情况得依赖于用在命令之间的分隔符。
如果每个命令被一个分号 (;) 所分隔,那么命令会连续的执行下去
如果每个命令被 && 号分隔,那么这些命令会一直执行下去,如果中间有错误的命令存在,则不再执行后面的命令,没错则执行到完为止
如果每个命令被双竖线(||)分隔符分隔,如果命令遇到可以成功执行的命令,那么命令停止执行,即使后面还有正确的命令则后面的所有命令都将得不到执行。假如命令一开始就执行失败,那么就会执行 || 后的下一个命令,直到遇到有可以成功执行的命令为止,假如所有的都失败,则所有这些失败的命令都会被尝试执行一次
时间设置
添加定时任务 : crontab -e
基本格式 :
* * * * * command
分 时 日 月 周 命令
解 释:
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令