详解使用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装饰器的函数式编程详解
Feb 27 Python
Python线程的两种编程方式
Apr 14 Python
python简单判断序列是否为空的方法
Jun 30 Python
Python基于回溯法子集树模板解决选排问题示例
Sep 07 Python
详解Python开发中如何使用Hook技巧
Nov 01 Python
tensorflow建立一个简单的神经网络的方法
Feb 10 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
Python Image模块基本图像处理操作小结
Apr 13 Python
django框架两个使用模板实例
Dec 11 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
聊聊Python String型列表求最值的问题
Jan 18 Python
python Tkinter模块使用方法详解
Apr 07 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 set_time_limit(0)长连接的实现分析
2010/03/02 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
python操作CouchDB的方法
2014/10/08 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python实现按首字母分类查找功能
2019/10/31 Python
mac使用python识别图形验证码功能
2020/01/10 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
Cotton On南非:澳洲时尚平价品牌
2018/06/28 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
《雪儿》教学反思
2014/04/17 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
2015年共青团工作总结
2015/05/15 职场文书
2015年学校医务室工作总结
2015/07/20 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Golang 并发下的问题定位及解决方案
2022/03/16 Golang
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python
VUE递归树形实现多级列表
2022/07/15 Vue.js