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中让MySQL查询结果返回字典类型的方法
Aug 22 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
python+matplotlib演示电偶极子实例代码
Jan 12 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 Python
Python使用字典的嵌套功能详解
Feb 27 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
django 读取图片到页面实例
Mar 27 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
python接入支付宝的实例操作
Jul 20 Python
Python 如何创建一个简单的REST接口
Jul 30 Python
Python进程间的通信之语法学习
Apr 11 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命名空间(Namespace)的使用详解
2013/05/04 PHP
php导出csv格式数据并将数字转换成文本的思路以及代码分享
2014/06/05 PHP
初识PHP
2014/09/28 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
jQuery根据元素值删除数组元素的方法
2015/06/24 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
JavaScript“尽快失败”的原则实例详解
2016/10/08 Javascript
JavaScript中const、var和let区别浅析
2016/10/11 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
layui中select,radio设置不生效的解决方法
2019/09/05 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
python通过smpt发送邮件的方法
2015/04/30 Python
pyqt5 使用cv2 显示图片,摄像头的实例
2019/06/27 Python
Python 静态方法和类方法实例分析
2019/11/21 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
德国家具购物网站:Möbel Höffner
2019/08/26 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
自荐信结尾
2013/10/27 职场文书
学生吸烟检讨书
2014/09/14 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
2015大学迎新晚会策划书
2015/07/16 职场文书