让Python脚本定时启动
准备好定时启动的脚本auto.py
用root权限编辑以下文件
sudo vim /etc/crontab
在文件末尾添加以下命令
* * * * root /usr/bin/python3.5 /home/edgar/auto.py > /home/edgar/auto.log
以上代码的意思是每隔两分钟执行一次脚本并打印日志。 (python3.5的路径和文件路径必须是绝对路径)
crontab编写解释
基本格式
user command
分 时 日 月 周 用户 命令
举例说明
1、每分钟执行一次
* * * * * user command
2、每隔2小时执行一次
* */2 * * * user command (/表示频率)
3、每天8:30分执行一次
30 8 * * * user command
4、每小时的30和50分各执行一次
30,50 * * * * user command(,表示并列)
5、每个月的3号到6号的8:30执行一次
30 8 3-6 * * user command (-表示范围)
6、每个星期一的8:30执行一次
30 8 * * 1 user command (周的范围为0-7,0和7代表周日)
crontab命令
service crond start #启动
service crond stop #关闭
service crond restart #重启
service crond reload #重新载入配置
crontab -e 命令添加定时任务
crontab -l 查看定时任务
检查crontab 任务执行情况,可以查看log 文件 /var/log/cron
也可以使用python-crontab包来设置
如:
安装直接
$ pip install python-crontab
下面在脚本上就可以方便的设置计划任务了
from crontab import CronTab
# 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限
my_user_cron = CronTab(user=True)
# 创建任务
job = my_user_cron.new(command='/usr/bin/python3.5 /home/edgar/auto.py')
# 设置任务执行周期,每两分钟执行一次
job.setall('*/2 * * * *')
# 当然还支持其他更人性化的设置方式,简单列举一些
job.minute.during(5,50).every(5)
job.hour.every(4)
job.day.on(4, 5, 6)
job.dow.on('SUN')
job.dow.on('SUN', 'FRI')
job.month.during('APR', 'NOV')
job.setall(time(10, 2))
job.setall(date(2000, 4, 2))
job.setall(datetime(2000, 4, 2, 10, 2))
# 同时可以给任务设置comment,这样就可以根据comment查询,很方便
job.set_comment("time log job")
# 根据comment查询,当时返回值是一个生成器对象,不能直接根据返回值判断任务是否#存在,如果只是判断任务是否存在,可直接遍历my_user_cron.crons
iter = my_user_cron.find_comment('time log job')
# 同时还支持根据command和执行周期查找,基本类似,不再列举
# 任务的disable和enable, 默认enable
job.enable(False)
job.enable()
# 最后将crontab写入配置文件
my_user_cron.write()
下面可通过命令查看,是否创建成功:
$ crontab -l