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+selenium实现京东自动登录及秒杀功能
Nov 18 Python
Python3 循环语句(for、while、break、range等)
Nov 20 Python
Python实现去除列表中重复元素的方法小结【4种方法】
Apr 27 Python
详解Python 装饰器执行顺序迷思
Aug 08 Python
Python 访问限制 private public的详细介绍
Oct 16 Python
python实现车牌识别的示例代码
Aug 05 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
python模块导入的方法
Oct 24 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
Django REST framwork的权限验证实例
Apr 02 Python
tensorflow使用freeze_graph.py将ckpt转为pb文件的方法
Apr 22 Python
python实现简单的井字棋
May 26 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
PHP 万年历实现代码
2012/10/18 PHP
PHP记录页面停留时间的方法
2016/03/30 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
js简单抽奖代码
2015/01/16 Javascript
超赞的jQuery图片滑块动画特效代码汇总
2016/01/25 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
jQuery时间戳和日期相互转换操作示例
2018/12/07 jQuery
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python中的函数作用域
2018/05/07 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
pandas 选取行和列数据的方法详解
2019/08/08 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
python如何写try语句
2020/07/14 Python
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
C语言编程练习
2012/04/02 面试题
舞蹈教师自荐信
2014/01/27 职场文书
大学生活动策划方案
2014/02/10 职场文书
《王二小》教学反思
2014/02/27 职场文书
学校机关党总支领导班子整改工作方案
2014/10/26 职场文书
五年级学生评语大全
2014/12/26 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
小学安全教育主题班会
2015/08/12 职场文书
使用Html+Css实现简易导航栏功能(导航栏遇到鼠标切换背景颜色)
2021/04/07 HTML / CSS
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python