最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
怎么使用 Shell 脚本监控 Apache 日志文件大小
时间:2026-07-16 07:53:49 编辑:袖梨 来源:一聚教程网
可用Shell脚本定期检查Apache日志大小并超限告警或轮转:用stat -c "%s"获取字节数,设阈值如100MB(104857600字节),超限时用logger通知或logrotate轮转,通过crontab每10分钟执行一次。
可以用 Shell 脚本定期检查 Apache 日志文件(如 access.log 或 error.log)的大小,当超过设定阈值时触发告警或自动轮转。关键在于准确获取文件大小、合理设置阈值,并避免频繁误报。
获取日志文件当前大小
Linux 下推荐用 stat 或 du 获取字节数,比 ls -lh 更适合脚本解析:
-
stat -c "%s" /var/log/apache2/access.log—— 直接输出字节数(推荐) -
du -b /var/log/apache2/access.log | awk '{print $1}'—— 兼容性更好,但略慢
注意路径需根据实际安装调整(Debian/Ubuntu 默认在 /var/log/apache2/,CentOS/RHEL 在 /var/log/httpd/)。
设定大小阈值并做判断
把阈值设为变量,单位统一用字节便于比较。例如限制单个日志不超过 100MB:
-
MAX_SIZE=$((100 * 1024 * 1024))(即 104857600 字节) - 用
-gt判断是否超限:if [ "$CURRENT_SIZE" -gt "$MAX_SIZE" ]; then ... - 建议预留缓冲空间,比如实际阈值设为 90MB,避免刚好卡在边界反复触发
超限时执行响应操作
不建议直接删日志,优先选择安全动作:
-
发送通知:用
mail或logger记录系统日志,例如logger "Apache access.log exceeds 100MB: $CURRENT_SIZE bytes" -
触发日志轮转:调用
logrotate命令(前提是已配好配置):logrotate /etc/logrotate.d/apache2 -
手动压缩归档:如
gzip -f /var/log/apache2/access.log,再生成新空文件:truncate -s 0 /var/log/apache2/access.log
加入定时任务自动运行
用 cron 每 10 分钟检查一次较合理(太频繁增加 I/O,太慢可能积压):
- 编辑定时任务:
crontab -e - 添加一行:
*/10 * * * * /path/to/check_apache_log.sh >/dev/null 2>&1 - 脚本开头加
#!/bin/bash,并确保有执行权限:chmod +x check_apache_log.sh
不复杂但容易忽略权限和路径问题,测试时先手动运行脚本确认输出和动作是否符合预期。
相关文章
- black souls2大胃袋成就解锁攻略 07-22
- 考试酷网页版登陆入口-考试酷网页版学生登陆 07-22
- 豆包网页版官网入口-豆包网页版怎么删除记录 07-22
- 漫漫漫画免费版在线阅读下载安装-漫漫漫画官方正版下载地址手机版 07-22
- 如何完成macOS软件安装与DMG制作-怎样制作macOS软件安装的DMG文件 07-22
- 欧洲卡车2 MOD如何安装-欧洲卡车2 MOD安装方法指南 07-22