服务上线有段时间了,今天收到磁盘报警通知,想应该是日志报警,于是想通过自动化删除7天前的日志信息,具体操作步骤如下(前两步排查文件大小):
1、登录服务器查看磁盘占用情况
df -lH
是/mvsp的目录占用空间太多
2、再通过du命令查看是哪个目录占用日志大
du -sh /mvsp/*
3、现在确定是日志文件了,下面做自动删除
3.1 创建一个 clearlog.sh 文件,内容如下
#!/bin/bash
find /mvsp/LOGS/logs -name "*.log_*" -mtime +7 -ls >> /mvsp/delete_$(date +%Y-%m-%d).log | xargs
find /mvsp/LOGS/logs -mtime +7 -name "*.log_*" -exec rm -rf {} \;
第一行说明:用于记录删除的文件名
「 find 」查找
「 /mvsp/LOGS/logs 」指定目录
「 -mtime +7 」7天前的(天数可自定义)
「 -name "*.log_*" 」所有文件名中包含 .log_ 的文件
「 | xargs -i mv {} 」固定写法
「 /mvsp/delete_」文件名
完整意思:查找/mvsp/LOGS/logs 目录下 7天前的所有文件名中包含 .log_ 的文件,然后文件名保存到 /mvsp/delete_*.log文件中 。
第二行说明:
find 」查找
「/mvsp/LOGS/logs 」指定的目录
「 -mtime +7 」7天前的(天数可自定义)
「 -name "*.log_*" 」所有文件名中包含 .log_ 的文件
「 -exec rm -rf {} \ 」固定写法
完整意思:查找/mvsp/LOGS/logs 目录下 7天前的所有文件名中包含 .log_ 的文件,然后将它们全部删除。
3.2 给 clearlog.sh 添加执行权限
chmod 777 clearlog.sh
3.3 设置定时任务:添加定时执行 clearlog.sh 脚本的任务
crontab -e
添加定时任务(每天凌晨1点执行)
0 1 * * * /mvsp/clearlog.sh
注意:为避免引起不必要的风险,建议先在测试环境使用