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 中的with关键字使用详解
Sep 11 Python
python实现彩色图转换成灰度图
Jan 15 Python
python调用c++传递数组的实例
Feb 13 Python
Python使用reportlab模块生成PDF格式的文档
Mar 11 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
Dlib+OpenCV深度学习人脸识别的方法示例
May 14 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
python匿名函数的使用方法解析
Oct 10 Python
Tensorflow训练MNIST手写数字识别模型
Feb 13 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
Python 如何定义匿名或内联函数
Aug 01 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 表单数据的获取代码
2009/03/10 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
php 无法加载mcrypt.dll的解决办法
2013/04/03 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php类自动加载器实现方法
2015/07/28 PHP
简述php环境搭建与配置
2016/12/05 PHP
phpinfo的知识点总结
2019/10/10 PHP
json格式化/压缩工具 Chrome插件扩展版
2010/05/25 Javascript
javascript中的startWith和endWith的几种实现方法
2013/05/07 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
2020/03/31 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
Python可视化mhd格式和raw格式的医学图像并保存的方法
2019/01/24 Python
浅谈python中get pass用法
2019/03/19 Python
Django框架验证码用法实例分析
2019/05/10 Python
python使用 cx_Oracle 模块进行查询操作示例
2019/11/28 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python @property装饰器原理解析
2020/01/22 Python
美国经典刺绣和字母儿童服装特卖:Smocked Auctions
2018/07/16 全球购物
管理科学大学生求职信
2013/11/13 职场文书
运动会入场词100字
2014/02/06 职场文书
优秀毕业生推荐信范文
2014/03/07 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
高中同学会活动方案
2014/08/14 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
教师求职简历自我评价
2015/03/10 职场文书
组织委员竞选稿
2015/11/21 职场文书
小学家庭教育心得体会
2016/01/14 职场文书
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers