返回 详解使用pyt...... 登陆

详解使用python crontab设置linux定时任务

巴扎黑 2017-01-12 13:38:57 438

熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。

但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得想办法解决,不然在程序猿界混(一群自得其乐的猿)。

下面进入正题,开始想通过以写文件的形式设置,通过在配置文件中直接追加一行即可。但是读写文件难免有点繁琐,再比如:设置任务时要检查任务是否已经存在;根据输入参数设置相应的任务等。以读写文件难免不太合适。所以想到了“万能”的大python。

当当当,今天的主角上场:python-crontab模块。安装直接

$ pip install python-crontab

下面在脚本上就可以方便的设置计划任务了

from crontab import CronTab 
# 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限 
my_user_cron = CronTab(user=True) 
# 创建任务 
job = my_user_cron.new(command='echo date >> ~/time.log') 
# 设置任务执行周期,每两分钟执行一次 
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

 很方便吧,还有一些功能没有完全介绍,大家可以参考官方文档https://pypi.python.org/pypi/python-crontab

更多关于使用python crontab设置linux定时任务请关注PHP中文网(www.php.cn)其他文章!

最新手记推荐

• 用composer安装thinkphp框架的步骤 • 省市区接口说明 • 用thinkphp,后台新增栏目 • 管理员添加编辑删除 • 管理员添加编辑删除

全部回复(0)我要回复

暂无评论~
  • 取消 回复 发送
  • PHP中文网