排查防火墙日志占用磁盘空间过大,核心是定位日志来源、评估增长行为、确认是否被进程持续持有,并落实轮转与清理机制;不能只删文件,否则易触发“df满而du小”的句柄残留问题。

排查防火墙日志占用磁盘空间过大,核心是定位日志来源、评估其增长行为、确认是否被进程持续持有,并落实轮转与清理机制。不能只删文件,否则容易触发“df满而du小”的句柄残留问题。
确认防火墙服务类型及日志路径
常见 Linux 防火墙有 iptables(配合 syslog)、firewalld(默认走 journald)、以及独立代理型防火墙如 Squid、DansGuardian。先明确你用的是哪一种:
-
firewalld:日志通常由 systemd-journal 管理,执行
journalctl -u firewalld --disk-usage查看占用;也可检查/var/log/firewalld(若启用了传统日志) -
iptables + rsyslog:日志一般落在
/var/log/messages或单独配置的/var/log/iptables.log,查看/etc/rsyslog.conf或/etc/rsyslog.d/*.conf -
Squid/DansGuardian:日志路径在各自配置文件中定义(如 Squid 的
cache_log、access_log),常见于/var/log/squid/或/var/log/dansguardian/
快速识别日志是否异常增长
别急着删,先判断是不是“活日志”在狂写:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 用
ls -lh /var/log/xxx/*.log*看文件大小和修改时间,重点关注最近 24 小时内持续变大的文件 - 用
tail -f /var/log/xxx/access.log实时观察日志追加频率(注意别卡住终端,可 Ctrl+C 中断) - 对活跃日志,执行
lsof +L1 | grep xxx(如grep squid),确认是否有已删除但仍在写入的“僵尸日志”
检查并启用日志轮转机制
手动清日志治标不治本,必须靠 logrotate 自动管理:
- 查轮转配置是否存在:
ls /etc/logrotate.d/ | grep -i squid\|dans\|firewalld - 若无,新建配置(以 Squid 为例):
/var/log/squid/*.log {<br> daily<br> rotate 7<br> compress<br> missingok<br> notifempty<br> create 644 proxy proxy<br> sharedscripts<br> postrotate<br> /usr/sbin/squid -k rotate > /dev/null<br> endscript<br> } - 测试配置是否生效:
logrotate -d /etc/logrotate.d/squid(-d 表示调试模式,不真实执行)
临时释放空间与安全清理
当磁盘已告急,需立即见效又不中断服务:
- 清空日志内容而非删除:
truncate -s 0 /var/log/squid/access.log(比> file更可靠,不会改变 inode) - 若发现
lsof | grep deleted显示大量已删日志被进程占用,重启对应服务:systemctl restart squid或systemctl restart dansguardian - 清理过期归档:
find /var/log/squid -name "*.log.*" -mtime +30 -delete
真正解决问题不是清一次日志,而是让日志“有进有出”。配好轮转、设好保留周期、定期验证,才能避免下次再爆。

















