Python使用crontab模块设置和清除定时任务操作详解


Posted in Python onApril 09, 2019

本文实例讲述了Python使用crontab模块设置和清除定时任务操作。分享给大家供大家参考,具体如下:

centos7下安装Python的pip

root用户使用yum install -y python-pip 时会报如下错误:

No package python-pip available
Error:Nothing to do

解决方法如下:

首先安装epel扩展源:

yum -y install epel-release

更新完成之后,就可安装pip:

yum -y install python-pip

安装完成之后清除cache:

yum clean all

这是在root用户时使用的命令,当前用户如果不具有root权限,加上sudo。

在其他Linux类似centos衍生的发行版也可以用此方法解决。

安装python定时任务模块:

pip install python-crontab

安装成功:可成功import 该模块

[root@centos7 mnt]# python
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crontab
>>>

封装一个类,用来新增和清除定时任务:

# coding=utf-8
from crontab import CronTab
class Crontab_Update(object):
  def __init__(self):
    # 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限
    self.cron = CronTab(user=True)
    # self.cron = CronTab(user='website')
  def add_crontab_job(self, cmmand_line, time_str, commont_name, user):
    # 创建任务
    job = self.cron.new(command=cmmand_line)
    # 设置任务执行周期
    job.setall(time_str)
    # 给任务添加一个标识,给任务设置comment,这样就可以根据comment查询
    job.set_comment(commont_name)
    # 将crontab写入配置文件
    # self.cron.write()
    self.cron.write_to_user(user=user) # 指定用户,写入指定用户下的crontab任务
  def del_crontab_jobs(self, comment_name, user):
    # 根据comment查询,当时返回值是一个生成器对象,
    # 不能直接根据返回值判断任务是否存在,
    # 如果只是判断任务是否存在,可直接遍历my_user_cron.crons
    # jobs = self.cron.find_comment(commont_name)
    # 返回所有的定时任务,返回的是一个列表
    # a = self.cron.crons
    # print 'a = ', a
    # print 'len(a) = ', len(a)
    # 按comment清除定时任务
    # self.cron.remove_all(comment=comment_name)
    # 按comment清除多个定时任务,一次write即可
    self.cron.remove_all(comment=comment_name)
    self.cron.remove_all(comment=comment_name+ ' =')
    # 清除所有定时任务
    # self.cron.remove_all()
    # 写入配置文件
    # self.cron.write()
    self.cron.write_to_user(user=user) # 指定用户,删除指定用户下的crontab任务
if __name__ == "__main__":
  print 'start --------'
  cmmand_line = "/usr/bin/python /mnt/print_time.py"
  time_str = "* * * * *"
  commont_name = "Test_Crontab_Job"
  user = "xue"
  # 创建一个实例
  crontab_update = Crontab_Update()
  # 调用函数新增一个crontab任务
  # print '&&&&&& add_crontab_job '
  # crontab_update.add_crontab_job(cmmand_line, time_str, commont_name, user)
  print '&&&&&& del_crontab_jobs '
  crontab_update.del_crontab_jobs(commont_name, user)
  print 'end -------'

定时任务执行的python脚本如下:print_time.py

# coding=utf-8
import datetime
# datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open('/mnt/datetime_log.txt', 'a') as f:
  f.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")+"\n")
f.close()

设置定时任务后:

下面可通过命令查看,是否创建成功:

crontab -l

结果如下:

Python使用crontab模块设置和清除定时任务操作详解

清除定时任务后:

Python使用crontab模块设置和清除定时任务操作详解

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

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python pdb调试方法分享
Jan 21 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
python中类和实例如何绑定属性与方法示例详解
Aug 18 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
python版飞机大战代码分享
Nov 20 Python
Python3离线安装Requests模块问题
Oct 13 Python
python+OpenCV实现车牌号码识别
Nov 08 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
Python count函数使用方法实例解析
Mar 23 Python
python with语句的原理与用法详解
Mar 30 Python
python中对列表的删除和添加方法详解
Feb 24 Python
Python实现的读取文件内容并写入其他文件操作示例
Apr 09 #Python
Python实现根据日期获取当天凌晨时间戳的方法示例
Apr 09 #Python
Python匿名函数及应用示例
Apr 09 #Python
用Python中的turtle模块画图两只小羊方法
Apr 09 #Python
python3实现表白神器
Apr 09 #Python
详解python配置虚拟环境
Apr 08 #Python
从0开始的Python学习016异常
Apr 08 #Python
You might like
php使用gzip压缩传输js和css文件的方法
2015/07/29 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
thinkphp中U方法按路由规则生成url的方法
2018/03/12 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
帮助避免错误的Javascript陷阱清单
2009/05/31 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
Jquery each方法跳出循环,并获取返回值(实例讲解)
2013/12/12 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
JavaScript获取URL中参数querystring的方法详解
2016/10/11 Javascript
vue2实现移动端上传、预览、压缩图片解决拍照旋转问题
2017/04/13 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
薪资那么高的Web前端必看书单
2017/10/13 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
Vue-cli3简单使用(图文步骤)
2019/04/30 Javascript
如何使用CSS3+JQuery实现悬浮墙式菜单
2019/06/18 jQuery
微信小程序之左右布局的实现代码
2019/12/13 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
Vue中import from的来源及省略后缀与加载文件夹问题
2020/02/09 Javascript
vue+elementUI(el-upload)图片压缩,默认同比例压缩操作
2020/08/10 Javascript
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
高效测试用例组织算法pairwise之Python实现方法
2017/07/19 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
python实现滑雪者小游戏
2020/02/22 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
2020/12/08 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
银行实习生的自我评价
2014/01/13 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
教师党员个人整改措施
2014/10/27 职场文书
2014年女职工工作总结
2014/11/27 职场文书
打架检讨书
2015/01/27 职场文书
新店开张宣传语
2015/07/13 职场文书
医院消毒隔离制度
2015/08/05 职场文书