上篇文章写到了在工作中遇到的一个因为磁盘空间占满导致的问题,因应用每天都要写日志,所以如果不定时对部署应用的服务器进行清理的话会经常遇到这样的问题。为避免相似的问题发生,今天总结一个Linux日志定时清理的脚本,简单的配置一下,一劳永逸,何乐而不为。
1、Linux删除文件命令:
find 对应目录 -mtime +天数 -name "文件名" -exec rm -rf {} \;
eg:
find /home/apache-tomcat-7.0.55-13-990*/webapps/ProxyServer2.0/WEB-INF/logs/ -mtime +10 -name "*.log.*" -exec rm -rf {} \;
说明:
find:Linux查找命令,用户查找指定条件的文件
/home/apache-tomcat-7.0.55-13-990*/webapps/HollyProxyServer2.0/WEB-INF/logs/:需要进行清理的目标目录
-mtime:标准语句写法
+10 :数字代表天数
-name "*.log.*":目标文件的类型,带有log的所有文件
-exec:固定写法
rm -rf:强制删除包括目录在内的文件
{} \;:固定写法,一对大括号+空格+\+;
2、设置定时任务
每次都去手动执行任务太麻烦,我们可以新建一个shell脚本文件,再设置cron调度执行,让系统自动去清理相关的文件。
(1)创建shell脚本(新建一个可执行文件auto-del-log.sh,并分配可运行权限)
touch /home/apache-tomcat-7.0.55-13-990*/webapps/ProxyServer2.0/WEB-INF/bin/auto-del-log.sh
chmod +x auto-del-log.sh
(2)编辑shell脚本
vi auto-del-log.sh
编辑auto-del-log.sh文件如下:
#!/bin/sh
find /home/apache-tomcat-7.0.55-13-990*/webapps/ProxyServer2.0/WEB-INF/logs/ -mtime +10 -name "*.log.*" -exec rm -rf {} \;
保存退出(:wq)。
(3)执行定时任务
#crontab -e进入定时任务编辑页面,按i底部出现INSERT,开始进行任务脚本编辑,将auto-del-log.sh执行脚本加入到系统计划任务,到点自动执行:
30 0 * * * /home/apache-tomcat-7.0.55-13-990*/webapps/ProxyServer2.0/WEB-INF/logs/ auto-del-log.sh
设置每天凌晨0:30执行auto-del-log.sh文件进行数据清理任务。
编辑完成按Ctrl+c,输入:quit,之后再输入:w!完成保存,ctrl+c,:quit退出。