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


Posted in Python onDecember 08, 2016

熟悉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 相关文章推荐
跟老齐学Python之使用Python查询更新数据库
Nov 25 Python
Cpy和Python的效率对比
Mar 20 Python
python编写简单爬虫资料汇总
Mar 22 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
Python实现的旋转数组功能算法示例
Feb 23 Python
python远程邮件控制电脑升级版
May 23 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
Oct 10 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
详解Python中@staticmethod和@classmethod区别及使用示例代码
Dec 14 Python
用Python的绘图库(matplotlib)绘制小波能量谱
Apr 17 Python
python使用shell脚本创建kafka连接器
Apr 29 Python
Python 正则表达式入门(中级篇)
Dec 07 #Python
Python 正则表达式入门(初级篇)
Dec 07 #Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 #Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 #Python
Python深入06——python的内存管理详解
Dec 07 #Python
Python制作钉钉加密/解密工具
Dec 07 #Python
详解Python 数据库 (sqlite3)应用
Dec 07 #Python
You might like
无数据库的详细域名查询程序PHP版(4)
2006/10/09 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
Symfony2安装第三方Bundles实例详解
2016/02/04 PHP
php实现的二分查找算法示例
2017/06/20 PHP
Ajax,UTF-8还是GB2312 eval 还是execScript
2008/11/13 Javascript
突发奇想的一个jquery插件
2010/11/19 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
vue-cli开发环境实现跨域请求的方法
2018/04/07 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
vue中使用rem布局代码详解
2019/10/30 Javascript
[44:58]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第二场
2018/04/06 DOTA
[48:24]完美世界DOTA2联赛循环赛LBZS vs Forest 第一场 10月30日
2020/10/31 DOTA
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
Django内容增加富文本功能的实例
2017/10/17 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
Python实现的求解最大公约数算法示例
2018/05/03 Python
django2.0扩展用户字段示例
2019/02/13 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
利用python生成照片墙的示例代码
2020/04/09 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
Java程序员综合测试题
2014/04/25 面试题
24岁生日感言
2014/01/13 职场文书
党员实事承诺书
2014/03/26 职场文书
献爱心活动总结
2014/05/07 职场文书
安全演讲稿开场白
2014/08/25 职场文书
导游词之广州陈家祠
2019/10/21 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL
Go语言特点及基本数据类型使用详解
2022/03/21 Golang