Linux中Crontab配置自动定时任务处理日常工作

在Linux服务器测试环境或正式生产环境常常设计一些定时例行处理的操作包括日记备份转移清理等,利用Crontab+Shell脚本组合实现定期定时操作,保证不会应工作繁忙忘记任务导致环境异常

Linux中Crontab配置自动定时任务处理日常工作

所属分类: Linux
专题标签: Crontab 配置 定时

需求描述

开发或测试环境一般会打开DEBUG调试模式,程序会产生大量的DEBUG_LOG,一周时间(甚至更短)就能把环境磁盘塞满。
人为手动删除日志的话,环境过多(工作量大),任务繁忙(遗忘),给环境使用带来影响。
Linux系统是否有与Windows类似的定时任务的程式呢?有的。
Crontab实现自动任务就是在/etc/crontab文件中按照规则配置自动任务,系统会按照配置进行任务调度。
其功能是在指定时间指定时间间隔调度命令或脚本或拉起程序。

命令配置语法格式

  1. minute hour day-of-month month-of-year day-of-week commands
  2. # minute 分钟(0-59)
  3. # hour 小时(0-23)
  4. # day-of-month 日(01-31)
  5. # month-of-year 月(01-12)
  6. # day-of-week 周(0-6)
  7. # commands 执行命令

参数除了填写数字还可以写特殊符号:

  1. *:所有数字组合(也可以认为不限制)
  2. /:每(一般*/5表示每5个单位时间)
  3. -:范围数字组合
  4. ,:多条件组合

编写简单的执行脚本

比如清理Oracle垃圾数据(先写一个清理的脚本clear.sh):

  1. #!/bin/bash
  2. rm -rf /*/oracle/diag/rdbms/trace/*
  3. rm -rf /*/oracle/diag/rdbms/alert/*

配置命令

Crontab命令的配置是写在/etc/crontab文件中

vi /etc/crontab

可以看到里面或许已存在一些已有任务。

Crontab命令简单实例:

  1. #以下实例基本涵盖了大部分使用场景
  2. #早上6点执行清理
  3. 0 6 * * * sh /home/oracle/task/clear.sh
  4. #每8小时执行清理
  5. 0 */8 * * * sh /home/oracle/task/clear.sh
  6. #晚11至早6点每两小时执行清理以及早六点执行清理
  7. 0 23-5/2,6 * * * sh /home/oracle/task/clear.sh
  8. #周三/周日早六点执行清理
  9. 0 6 * * 3,0 sh /home/oracle/task/clear.sh

生效方式

/etc/crontab中正确配置保存后即可生效。