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爬虫之urllib2使用指南
Nov 05 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
Python如何为图片添加水印
Nov 25 Python
使用Python3 编写简单信用卡管理程序
Dec 21 Python
对Python中Iterator和Iterable的区别详解
Oct 18 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 Python
python opencv实现图像边缘检测
Apr 29 Python
python批量修改ssh密码的实现
Aug 08 Python
Python中__repr__和__str__区别详解
Nov 07 Python
如何基于python实现归一化处理
Jan 20 Python
Python unittest框架操作实例解析
Apr 13 Python
Pytorch GPU内存占用很高,但是利用率很低如何解决
Jun 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初学者头痛的十四个问题
2006/07/12 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
简述php环境搭建与配置
2016/12/05 PHP
使用PHPWord生成word文档的方法详解
2019/06/06 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
轻轻松松学习JavaScript
2007/02/25 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
Javascript 中文字符串处理额外注意事项
2009/11/15 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
js精度溢出解决方案
2012/12/02 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
jQuery插件zTree实现的基本树与节点获取操作示例
2017/03/08 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
JS拖动选择table里的单元格完整实例【基于jQuery】
2019/05/28 jQuery
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
[01:33]完美世界DOTA2联赛PWL S3 集锦第二期
2020/12/21 DOTA
python将txt文件读取为字典的示例
2018/12/22 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
世界上最全面的汽车零部件和配件集合:JC Whitney
2016/09/04 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
门前三包责任书
2014/04/15 职场文书
2014年高一班主任工作总结
2014/12/05 职场文书
2015年见习期工作总结
2014/12/12 职场文书
司机岗位职责范本
2015/04/10 职场文书
研究生论文答辩开场白
2015/05/27 职场文书
2016年端午节红领巾广播稿
2015/12/18 职场文书