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使用multiprocessing创建进程的方法
Jun 04 Python
Python Requests 基础入门
Apr 07 Python
numpy.delete删除一列或多列的方法
Apr 03 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
Python 利用pydub库操作音频文件的方法
Jan 09 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
Apr 04 Python
Python之指数与E记法的区别详解
Nov 21 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
新手入门学习python Numpy基础操作
Mar 02 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 Python
python中二分查找法的实现方法
Dec 06 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 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图片处理函数获取类型及扩展名实例
2014/11/19 PHP
php实现xml与json之间的相互转换功能实例
2016/07/07 PHP
php中的异常和错误浅析
2017/05/03 PHP
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jquery radio的取值_radio的选中_radio的重置方法
2016/09/20 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
AngularJS日程表案例详解
2017/08/15 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
基于jquery实现九宫格拼图小游戏
2018/11/30 jQuery
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
在vue中利用全局路由钩子给url统一添加公共参数的例子
2019/11/01 Javascript
jQuery实现移动端图片上传预览组件的方法分析
2020/05/01 jQuery
django数据库migrate失败的解决方法解析
2018/02/08 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
2021/01/28 Python
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
秋季婚礼证婚词
2014/01/11 职场文书
2014年纪检部工作总结
2014/11/12 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
如何使用Python提取Chrome浏览器保存的密码
2021/06/09 Python
Java实现简易的分词器功能
2021/06/15 Java/Android
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技