Linux服务器日志爆满?5个实用命令快速定位并清理大日志文件
Linux服务器日志爆满5个实用命令快速定位并清理大日志文件当服务器磁盘空间告急时日志文件往往是罪魁祸首。作为系统管理员我们需要快速定位问题并安全清理避免服务中断。本文将分享5个核心命令的组合使用技巧帮助你在紧急情况下高效解决问题。1. 快速诊断定位磁盘空间占用源头遇到磁盘空间不足的警报时第一步是找出真正的空间吞噬者。du命令配合排序能快速展示目录大小分布du -h /var/log | sort -rh | head -n 10这个命令组合会-h以人类可读格式显示大小GB/MB/KBsort -rh按数值逆序排序head -n 10只显示前10大目录典型输出示例4.2G /var/log/nginx 2.8G /var/log/mysql 1.5G /var/log/audit进阶技巧添加--max-depth1参数可以控制目录遍历深度加快扫描速度du -h --max-depth1 /var | sort -rh2. 精准打击识别特定大日志文件找到问题目录后需要用find命令精确定位大文件。这个命令组合能列出大于100MB的日志文件find /var/log -name *.log -size 100M -exec ls -lh {} \;关键参数解析-name *.log只搜索.log后缀文件-size 100M筛选大于100MB的文件-exec ls -lh {} \;对找到的文件执行ls命令输出示例-rw-r----- 1 root adm 1.2G Jun 15 10:23 /var/log/nginx/access.log -rw-r----- 1 mysql adm 890M Jun 15 09:45 /var/log/mysql/slow.log特别提醒如果时间紧迫可以直接按时间筛选旧文件find /var/log -name *.log -mtime 30 -exec ls -lh {} \;-mtime 30表示修改时间超过30天的文件。3. 安全清理日志文件删除策略直接删除日志文件可能影响正在写入的进程。更安全的做法是清空文件内容# 查看文件当前大小 ls -lh /var/log/nginx/access.log # 清空文件内容保留文件句柄 truncate -s 0 /var/log/nginx/access.log # 验证清空结果 ls -lh /var/log/nginx/access.log对于确定要删除的旧日志可以使用find配合-deletefind /var/log/nginx -name access.log.* -mtime 90 -delete危险操作警示绝对不要使用rm -f /var/log/*这样的通配符删除可能误删关键日志。4. 实时监控动态查看日志增长情况ls命令的-ltrh组合能显示文件按时间反向排序的详细信息watch -n 5 ls -ltrh /var/log/nginx/这个命令会每5秒刷新一次(-n 5)显示文件详情(-l)按修改时间倒序(-tr)人类可读大小(-h)对于正在快速增长的文件可以用tail观察实时写入tail -f /var/log/nginx/access.log | awk {print $1} | uniq -c5. 长效治理logrotate配置实例临时清理只是应急长期解决方案是配置logrotate。以下是Nginx日志的配置示例cat /etc/logrotate.d/nginx EOF /var/log/nginx/*.log { daily missingok rotate 14 compress delaycompress notifempty create 0640 www-data adm sharedscripts postrotate [ -f /var/run/nginx.pid ] kill -USR1 cat /var/run/nginx.pid endscript } EOF关键参数说明daily每天轮转rotate 14保留14个历史版本compress启用gzip压缩delaycompress延迟压缩前一个版本create 0640 www-data adm新日志文件的权限和属主测试配置是否正确logrotate -d /etc/logrotate.d/nginx6. 高级技巧日志分析定位异常有时日志暴增是异常流量导致的。用这些命令可以快速分析统计访问量TOP 10的IPawk {print $1} /var/log/nginx/access.log | sort | uniq -c | sort -nr | head查找HTTP错误grep -E 50[0-9] /var/log/nginx/access.log | awk {print $7,$9} | sort | uniq -c检查MySQL慢查询mysqldumpslow -s t /var/log/mysql/mysql-slow.log | head -n 207. 自动化监控方案建议将以下命令加入定期监控脚本# 磁盘空间检查 df -h | awk $5 90 {print $6 is $5 full} # 日志目录大小监控 du -sh /var/log/* | sort -rh | head -n 5 # 大文件检查 find /var/log -type f -size 500M -exec ls -lh {} \; | mail -s Large log files alert adminexample.com将这些命令加入cron定时任务可以提前发现问题# 每天检查一次 0 0 * * * /usr/local/bin/log_monitor.sh
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2471081.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!