下面给你一个实用、可复用的日志清理 Shell 脚本示例,并解释关键点和注意事项,你可以直接改成自己的环境。
日志清理脚本一般做这几件事:
#!/bin/bash
# 日志目录
LOG_DIR="/var/log/myapp"
# 保留天数
KEEP_DAYS=7
# 清理日志文件
find "$LOG_DIR" -type f -name "*.log" -mtime +$KEEP_DAYS -exec rm -f {} \;
echo "$(date '+%F %T') 日志清理完成" >> /var/log/clean_log.log
-mtime +7:修改时间超过 7 天*.log:只清理日志文件rm -f:强制删除#!/bin/bash
LOG_DIR="/var/log/myapp"
KEEP_DAYS=7
# 先压缩旧日志
find "$LOG_DIR" -type f -name "*.log" -mtime +1 ! -name "*.gz" -exec gzip {} \;
# 删除 7 天前的压缩日志
find "$LOG_DIR" -type f -name "*.log.gz" -mtime +$KEEP_DAYS -exec rm -f {} \;
✅ 优点:
# 删除大于 500M 的日志
find "$LOG_DIR" -type f -name "*.log" -size +500M -exec rm -f {} \;
如果是 Linux 服务器,强烈建议用 logrotate 而不是自己写脚本。
示例 /etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily
rotate 7
compress
missingok
notifempty
}
✅ 自动轮转
✅ 不易写错
✅ 系统级支持
crontab -e
每天凌晨 1 点执行:
0 1 * * * /opt/scripts/clean_log.sh
⚠️ 一定要:
echo 测试,不要直接 rm如果你告诉我:
我可以帮你定制一个可直接用的脚本。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。