Crontab定时任务配置

Crontab定时任务配置

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。

Crontab语法及应用

  1. 查看当前用户的定时任务

    [root@localhost ~]$ crontab -l
    */2 * * * * sh /home/oracle/test.sh >/dev/null 2>&1
    
  2. 编辑当前用户的定时任务

    #可以在编辑状态修改、删除、新增一些定时任务,注释一般用#
    [root@localhost ~]$ crontab –e
    
  3. 删除当前用户的定时任务

    [root@localhost ~]$ crontab -r
    [root@localhost ~]$ crontab -l
    no crontab for root
    
    注意:在执行crontab –r命令时,默认会删除当前用户的所有定时任务,操作需谨慎,如果只想删除某个定时任务,只需要将该定时任务注释即可。
  4. 定时任务格式说明

    一般crontab文件里面的定时任务格式如下所示:

    */2 * * * * sh /home/oracle/test.sh >/dev/null 2>&1
    

    crontab 文件中每个条目中各个域的意义和格式为:

    • 第一列 分钟: 1—59
    • 第二列 小时: 1—23(0表示子夜)
    • 第三列 日 : 1—31
    • 第四列 月: 1—12
    • 第五列 星期: 星期0—6(0表示星期天,1表示星期一、以此类推)
    • 第六列及其后:要运行的命令

    前面五列通过组合方式来决定执行脚本的频率,最小频率为每分钟执行一次,通常可以用以下四种形式来表示:

    • * 表示每的意思,即每分钟、每小时(依次类推.....)去执行第六列的命令。
    • */n 表示每n分钟、每n小时(依次类推.....)去执行第六列的命令。
    • T1-T2 表示从第T1分钟到T2分钟,从第T1小时到T2小时(依次类推.....)去执行第六列的命令。
    • a,b,c 表示第a,b,c分钟,第a,b,c小时(依次类推.....)去执行第六列的命令。

    样例:

    1. 每天23点59分执行脚本/home/oracle/test.sh
      59 23 * * * sh /home/oracle/test.sh >/dev/null 2>&1
      
    2. 每5分钟执行一次脚本/home/oracle/test.sh
      */5 * * * * sh /home/oracle/test.sh >/dev/null 2>&1
      
    3. 周一到周五每天下午 20:00 执行脚本/home/oracle/test.sh
      0 20 * * 1-5 sh /home/oracle/test.sh >/dev/null 2>&1
      
    2>&1:0表示键盘输入,1表示标准输出,2表示错误输出;2>&1 是将错误输出重定向到标准输出,然后将标准输入重定向到文件/dev/null。/dev/null:在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据。
  5. 配置定时任务时,需要注意两个问题:

    • 在shell中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到对应的环境变量信息,这是因为crontab环境变量问题,crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置。

    • 尽量所有的文件都采用完全路径方式,避免使用相对路径。

获取Crontab执行脚本

通过crontab –l 命令,可以查看到当前用户的定时任务信息:

[root@localhost ~]$ crontab -l
*/2 * * * * sh /home/oracle/test.sh >/dev/null 2>&1

其中/home/oracle/test.sh即为定时执行的脚本。在Linux及AIX操作系统中,我们可以通过cat 命令查看文件内容。例如:想要查看/home/oracle/test.sh脚本中的信息,只需执行cat /home/oracle/test.sh命令即可。

posted @ 2020-08-19 09:50  拾荒者-B  阅读(332)  评论(0)    收藏  举报