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抓取Discuz!用户名脚本代码
Dec 30 Python
python处理xml文件的方法小结
May 02 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 Python
python编程使用selenium模拟登陆淘宝实例代码
Jan 25 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
对python使用telnet实现弱密码登录的方法详解
Jan 26 Python
set在python里的含义和用法
Jun 24 Python
python lambda表达式(匿名函数)写法解析
Sep 16 Python
Python3+Requests+Excel完整接口自动化测试框架的实现
Oct 11 Python
pytorch实现MNIST手写体识别
Feb 14 Python
Python字符串hashlib加密模块使用案例
Mar 10 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 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 作用域解析运算符(::)
2010/07/27 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
jQuery弹出层插件简化版代码下载
2008/10/16 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
JS+CSS实现简易的滑动门效果代码
2015/09/24 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
node中的session的具体使用
2018/09/14 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
JavaScript canvas绘制折线图
2020/02/18 Javascript
JS算法教程之字符串去重与字符串反转
2020/12/15 Javascript
python和C语言混合编程实例
2014/06/04 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
Python检测数据类型的方法总结
2019/05/20 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
2020/12/01 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
聚美优品励志广告词
2014/03/14 职场文书
婚前协议书
2014/04/15 职场文书
校长创先争优承诺书
2014/08/30 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
研究生个人学年总结
2015/02/14 职场文书
酒店厨房管理制度
2015/08/06 职场文书
礼仪培训心得体会
2016/01/22 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
使用CSS实现按钮边缘跑马灯动画
2023/05/07 HTML / CSS