Linux服务器测试环境或正式生产环境常常设计一些定时例行处理的操作,如日记备份转移清理等,利用Crontab+Shell脚本组合实现定期定时操作,确保不会应工作繁忙忘记任务导致环境异常
开发或测试环境一般会打开 DEBUG 调试模式,程序会产生大量的 DEBUG_LOG,一周时间(甚至更短)就能把环境磁盘塞满。
人为手动删除日志的话,环境过多(工作量大),任务繁忙(遗忘),给环境使用带来影响。
Linux 系统是否有与 Windows 类似的定时任务的程式呢?有的。
Crontab 实现自动任务就是在/etc/crontab 文件中按照规则配置自动任务,系统会按照配置进行任务调度。
其功能是在指定时间或指定时间间隔调度命令或脚本或拉起程序。
注意:Cron 表达式并非 Linux 系统独有,在很多高级语言中均有适配此类能力,其更像是一种标准或规范。
minute hour day-of-month month-of-year day-of-week commands
# minute 分钟(0-59)
# hour 小时(0-23)
# day-of-month 日(01-31)
# month-of-year 月(01-12)
# day-of-week 周(0-6)
# commands 执行命令
参数除了填写数字还可以写特殊符号:
比如清理 Oracle 垃圾数据(先写一个清理的脚本 clear.sh):
#!/bin/bash
rm -rf /*/oracle/diag/rdbms/trace/*
rm -rf /*/oracle/diag/rdbms/alert/*
Crontab 命令的配置是写在/etc/crontab 文件中
vi /etc/crontab
可以看到里面或许已存在一些已有任务。
Crontab 命令简单实例:
#以下实例基本涵盖了大部分使用场景
#早上6点执行清理
0 6 * * * sh /home/oracle/task/clear.sh
#每8小时执行清理
0 */8 * * * sh /home/oracle/task/clear.sh
#晚11至早6点每两小时执行清理以及早六点执行清理
0 23-5/2,6 * * * sh /home/oracle/task/clear.sh
#周三/周日早六点执行清理
0 6 * * 3,0 sh /home/oracle/task/clear.sh
在**/etc/crontab**中正确配置保存后即可生效。
温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。