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实现文本文件合并
Dec 29 Python
Python 3中的yield from语法详解
Jan 18 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
django表单的Widgets使用详解
Jul 22 Python
python3.7将代码打包成exe程序并添加图标的方法
Oct 11 Python
python装饰器使用实例详解
Dec 14 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
python中threading和queue库实现多线程编程
Feb 06 Python
matplotlib bar()实现百分比堆积柱状图
Feb 24 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/10/09 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
2014/04/10 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
php+iframe 实现上传文件功能示例
2020/03/04 PHP
jQuery 相关控件的事件操作分解
2009/08/03 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
js预加载图片方法汇总
2015/06/15 Javascript
轻松5句话解决JavaScript的作用域
2016/07/15 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
vue自定义过滤器创建和使用方法详解
2017/11/06 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
微信小程序实现限制用户转发功能的实例代码
2020/02/22 Javascript
详解JavaScript 的执行机制
2020/09/18 Javascript
[33:33]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第二场 11.27
2020/11/30 DOTA
pygame学习笔记(4):声音控制
2015/04/15 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
使用Python来开发Markdown脚本扩展的实例分享
2016/03/04 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python使用numpy读取、保存txt数据的实例
2018/10/14 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
2019/01/09 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python中_del_还原数据的方法
2020/12/09 Python
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
建筑设计师岗位职责
2013/11/18 职场文书
银行求职自荐信
2014/06/30 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
2014年学生资助工作总结
2014/12/18 职场文书