zoukankan      html  css  js  c++  java
  • 详解使用python crontab设置linux定时任务

    熟悉linux的朋友应该知道在linux中可以使用crontab设置定时任务。可以通过命令crontab -e编写任务。当然也可以直接写配置文件设置任务。

    但是有时候希望通过脚本自动设置,比如我们应用程序部署时等。有需求当然就得想办法解决,不然在程序猿界混(一群自得其乐的猿)。

    下面进入正题,开始想通过以写文件的形式设置,通过在配置文件中直接追加一行即可。但是读写文件难免有点繁琐,再比如:设置任务时要检查任务是否已经存在;根据输入参数设置相应的任务等。以读写文件难免不太合适。所以想到了“万能”的大python。

    当当当,今天的主角上场:python-crontab模块。安装直接

    1
    $ pip install python-crontab

    下面在脚本上就可以方便的设置计划任务了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    from crontab import CronTab
     
    # 创建当前用户的crontab,当然也可以创建其他用户的,但得有足够权限
     
    my_user_cron = CronTab(user=True)
     
    # 创建任务
     
    job = my_user_cron.new(command='echo date >> ~/time.log')
     
    # 设置任务执行周期,每两分钟执行一次
     
    job.setall('*/2 * * * *')
     
    # 当然还支持其他更人性化的设置方式,简单列举一些
     
    job.minute.during(5,50).every(5)
     
    job.hour.every(4)
     
    job.day.on(4, 5, 6)
     
    job.dow.on('SUN')
     
    job.dow.on('SUN', 'FRI')
     
    job.month.during('APR', 'NOV')
     
    job.setall(time(10, 2))
     
    job.setall(date(2000, 4, 2))
     
    job.setall(datetime(2000, 4, 2, 10, 2))
     
    # 同时可以给任务设置comment,这样就可以根据comment查询,很方便
     
    job.set_comment("time log job")
     
    # 根据comment查询,当时返回值是一个生成器对象,不能直接根据返回值判断任务是否#存在,如果只是判断任务是否存在,可直接遍历my_user_cron.crons
     
    iter = my_user_cron.find_comment('time log job')
     
    # 同时还支持根据command和执行周期查找,基本类似,不再列举
     
    # 任务的disable和enable, 默认enable
     
    job.enable(False)
     
    job.enable()
     
    # 最后将crontab写入配置文件
     
    my_user_cron.write()

    下面可通过命令查看,是否创建成功:

    1
    $ crontab -l

     很方便吧,还有一些功能没有完全介绍,大家可以参考官方文档https://pypi.python.org/pypi/python-crontab

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 相关阅读:
    牛客挑战赛48C铬合金之声【Prufer序列】
    Java 基础 反射
    MDX Query mdx的基本语法和概念
    Maven 深入理解maven构建生命周期和各种plugin插件
    Java基础 String,StringBuilder,StringBuffer三者的区别
    Java基础 Java 抽象类 抽象方法
    Java 基础 final vs static
    JMX JMX(Java Management Extensions)定义
    Java 多线程 生产者消费者问题
    Java 基础 如何重写equals()
  • 原文地址:https://www.cnblogs.com/ExMan/p/9486471.html
Copyright © 2011-2022 走看看