crontab 的用法

news/2024/5/31 22:04:37 标签: linux, centos, 运维

怎么快速创建 cron job 任务

  1. 基本知识的铺垫:
    在这里插入图片描述
    星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
    逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9
    中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
    正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

  2. crontab -e 编辑计划任务,然后就像编辑普通文件一样,编辑计划任务即可

    [root@hc-25-68-14 tmp]# crontab -e
    */2 * * * *  /bin/echo "hello" >> /tmp/hello   
    # 每2分钟向文件 /tmp/hello的行尾写入 hello 字符串,
    # 当然也可以*/2 * * * * /bin/sed -i '$a hello' /tmp/hello , 这要求 /tmp/hello 文件中是有内容的
    # 为了确保计划任务能正确执行,最好在 shell 里面手动执行下计划任务中的命令同时命令的路径最好用绝对路径
    
    wq保存退出可以看到   
    
    [root@hc-25-68-14 ~]# crontab -e
    crontab: installing new crontab
    [root@hc-25-68-14 ~]#
    

    扩展:每2个小时执行一次脚本:
    0 */2 * * * /bin/echo “hello” >> /tmp/hello
    开头的分钟的星需要设置为一个具体的分钟值,表示每2个小时的某个分钟执行,如果是星,那么默认是每分钟执行一次。
    crontab设置为每2个小时之后,是从当前时间算起,还是怎么样的?
    crontab修改生效的时间是10:48。那么是 12:48 第一次执行,还是12:00就会执行?
    发现: 在12:00,14:00,16:00时间是2的倍数的都会执行。

    解释:从crontab生效开始,系统时间小时数每遇到2的倍数,如:12:00,14:00等就会执行。

    这并不是真正的每隔 2 小时运行一次。严格的每隔 2 小时的写法是:
    */120 * * * * /bin/echo “hello” >> /tmp/hello #每120分钟执行一次
    在 Redhat 上尝试,这种写法是不对的。
    对于分钟列这样 */x 的写法,其他列都是 * ,真实表达的意思是:
    如果 x < 60, 比如 25, 则在 25min 50min 和整点的时候执行
    如果 x >= 60 比如 71, 则只会在整点执行

  3. crontab -l 查看定时任务

    [root@hc-25-68-14 tmp]# crontab  -l
    */2 * * * *  echo "hello" >> /tmp/hello
    [root@hc-25-68-14 tmp]# 
    
  4. 其实上面的编辑的定时任务,就保存在了 /var/spool/cron/root 中, 该文件不要直接编辑

    [root@hc-25-68-14 tmp]# cat /var/spool/cron/root 
    */2 * * * *  echo "hello" >> /tmp/hello
    [root@hc-25-68-14 tmp]# 
    
  5. shell 命令行直接增加 cron job

    CRONTAB_CMD="20 * * * * /usr/sbin/logrotate $SHDIR/logrotate_archiver"
    (crontab -l 2>/dev/null | grep -Fv "$CRONTAB_CMD"; echo "$CRONTAB_CMD") | crontab -
    

    日志文件:  ls -al /var/log/cron*  
    进程:ps -ef | grep crond  ==> /etc/init.d/crond restart  
    
    [root@JXQ-240-90-228 logrotate]# pwd
     /var/lib/logrotate
     [root@JXQ-240-90-228 logrotate]# cat logrotate.status 
     logrotate state -- version 2
     "/var/log/yum.log" 2019-4-4-10:0:0
     "/export/servers/var/log/w1-4.log" 2019-9-8-12:0:1
     "/var/log/boot.log" 2019-9-8-3:38:1
     "/export/servers/var/log/w1.log" 2019-8-20-3:0:0
     "/var/log/chrony/*.log" 2019-4-4-10:0:0
     "/var/log/wtmp" 2019-9-1-3:45:1
     "/export/servers/var/log/w1-1.log" 2019-9-8-12:0:1
     "/var/log/spooler" 2019-4-4-10:0:0
     "/export/servers/var/log/archiver.log" 2019-9-8-16:0:1
     "/var/log/btmp" 2019-9-1-3:45:1
     "/var/log/maillog" 2019-9-1-3:45:1
     "/var/log/aide/*.log" 2019-4-4-10:0:0
     "/var/log/iptraf-ng/*.log" 2019-4-4-10:0:0
     "/export/servers/var/log/w1-2.log" 2019-9-8-12:0:1
     "/var/log/wpa_supplicant.log" 2019-4-4-10:0:0
     "/var/log/secure" 2019-9-1-3:45:1
     "/export/servers/var/log/uwsgi_archvier.log" 2019-8-20-3:0:0
     "/var/log/messages" 2019-9-1-3:45:1
     "/var/account/pacct" 2019-4-4-10:0:0
     "/var/log/cron" 2019-9-1-3:45:1
     "/export/servers/var/log/w1-3.log" 2019-9-8-12:0:1
     [root@JXQ-240-90-228 logrotate]# 
    

http://www.niftyadmin.cn/n/1601550.html

相关文章

logroate 的用法

根据下面的定时任务的内容 [roothc-25-68-14 ~]# cat /etc/cron.daily/logrotate #!/bin/sh/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1EXITVALUE$?if [ $EXITVALUE ! 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$…

Python 类继承之类变量和类方法的用法

本页主要讨论python中的类继承时的类变量和类方法的用法。在阅读相关代码时&#xff0c;一定要切记当前 self 是谁&#xff0c;类型是什么&#xff0c;继承关系是什么&#xff0c;MRO是什么。这样才能准确把握代码的调用流程。 示例代码&#xff1a;注意在类方法 get_name&…

Python 全局变量的用法

直奔主题实战 Python 全局变量&#xff0c; 注意分析输出的结果&#xff1a;在 hello1 中&#xff0c;其实操作的是局部变量 GLOBAL_VAR &#xff08;其名字有点唬人&#xff09;&#xff0c;hello2()的两次调用操作的都是全局变量 GLOBAL_VAR #!/usr/bin/env python # -*- co…

Python 类继承之多继承 和 mixin 的用法

本文是关于Python 类继承之多继承 和 mixin 的用法。在阅读相关代码时&#xff0c;一定要切记当前 self 是谁&#xff0c;类型是什么&#xff0c;继承关系是什么&#xff0c;MRO是什么&#xff0c; 这样才能准确把握代码的调用流程。 关于 mixin 的用法&#xff0c;可以阅读 Dj…

Pyhton 类继承之 super 的用法和 MRO 方法解析顺序 1

本文是介绍 Python 中继承或多继承时 super 的工作原理和方法解析顺序&#xff08;Method Resolution Order, MRO&#xff09;&#xff0c; 从根本上理解super(cls, inst) 背后到底是什么意思和 MRO。在阅读相关代码时&#xff0c;一定要切记当前 self 是谁&#xff0c;类型是什…

Django csrf 的源码解析(DRF会避开 csrf 因为其类 APIView 继承了Django框架的 View 并重写了 as_view 方法)

本文要说明一个问题&#xff1a; Django 后端什么时候会让前端在 cookie 中的写 crsftoken? 是每次请求都会写一个新的 crsftoken 吗&#xff1f; C:\Python27\Lib\site-packages\django\middleware\csrf.py def _sanitize_token(token): # Allow only alphanumif len(toke…

Pyhton 类继承之 super 的用法和 MRO 方法解析顺序 2

本文主要讨论的是对下面的继承关系&#xff0c; super()的调用顺序。和 上篇文章 不一样的地方是 Class B 不继承 Class Base ,所以看到 Class MyClass 的 MRO 发生了变化 示例代码&#xff1a; 类的继承关系:Base| A B\ /MyClassclass Base(object):def __init__(self)…

Pyhton 类继承之 self.method() 的方法解析顺序

本文解决的问题是&#xff1a; 对于如下的继承关系&#xff0c; Class MyClass 的对象调用的方法 display 在 Class Base 和 Class B 中都存在&#xff0c;实际调用的是哪一个? 示例代码&#xff1a; 类的继承关系:Base| A B\ /MyClassclass Base(object):def __init__…