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数据结构之二叉树的建立实例
Apr 29 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
Mar 13 Python
Pycharm学习教程(4) Python解释器的相关配置
May 03 Python
python实现微信自动回复功能
Apr 11 Python
python实现监控某个服务 服务崩溃即发送邮件报告
Jun 21 Python
flask中的wtforms使用方法
Jul 21 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
python迷宫问题深度优先遍历实例
Jun 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中redis的用法深入解析
2014/02/20 PHP
mysql_escape_string()函数用法分析
2016/04/25 PHP
php实现连接access数据库并转txt写入的方法
2017/02/08 PHP
用PHP的反射实现委托模式的讲解
2019/03/22 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Nigma vs Liquid BO3 第一场2.14
2021/03/10 DOTA
javascript游戏开发之《三国志曹操传》零部件开发(五)可移动地图的实现
2013/01/23 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
jquery获取子节点和父节点的示例代码
2013/09/10 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
学习JavaScript设计模式之策略模式
2016/01/12 Javascript
javascript实现的全国省市县无刷新多级关联菜单效果代码
2016/08/01 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
python绘图库Matplotlib的安装
2014/07/03 Python
Python中DJANGO简单测试实例
2015/05/11 Python
python查询mysql,返回json的实例
2018/03/26 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
基于MSELoss()与CrossEntropyLoss()的区别详解
2020/01/02 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
《诚实与信任》教学反思
2014/04/10 职场文书
青年志愿者活动总结
2014/04/26 职场文书
精彩的演讲稿开头
2014/05/08 职场文书
酒店管理失职检讨书
2014/09/16 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
高一语文教学反思
2016/02/16 职场文书
hive数据仓库新增字段方法
2022/06/25 数据库