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双向链表实现实例代码
Nov 21 Python
python文件读写操作与linux shell变量命令交互执行的方法
Jan 14 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
Jul 06 Python
python批量实现Word文件转换为PDF文件
Mar 15 Python
Python中Proxypool库的安装与配置
Oct 19 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
Python collections.defaultdict模块用法详解
Jun 18 Python
python3排序的实例方法
Oct 20 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
Python序列化模块JSON与Pickle
Jun 05 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
windows平台中配置nginx+php环境
2015/12/06 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
php实现数据库的增删改查
2017/02/26 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
javascript静态的url如何传递
2007/05/03 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
用jQuery的AJax实现异步访问、异步加载
2016/11/02 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
JavaScript之json_动力节点Java学院整理
2017/06/29 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
antd design table更改某行数据的样式操作
2020/10/31 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
浅析Python基础-流程控制
2016/03/18 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
keras输出预测值和真实值方式
2020/06/27 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
使用django自带的user做外键的方法
2020/11/30 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
盛大二次面试题
2016/11/18 面试题
地下停车场租赁协议范本
2014/10/07 职场文书
起诉状范本
2015/05/20 职场文书
阿里云服务器搭建Php+Apache运行环境的详细过程
2021/05/15 PHP
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript