温馨提示×

怎样排查linux cleanup问题

小樊
38
2026-09-17 14:28:57
栏目: 智能运维

“Linux cleanup 问题”范围比较广,通常指系统清理(磁盘、日志、缓存、临时文件等)后出现的异常,或清理脚本/定时任务(cleanup)本身执行异常。下面按「常见场景 → 排查思路 → 实用命令」给你一个系统化的排查框架。


一、先明确“cleanup 问题”是哪一类

先确认问题现象:

  • A. 磁盘空间没释放(cleanup 后 df 仍满)
  • B. 清理后服务异常 / 文件丢失
  • C. 定时 cleanup 任务(cron / systemd timer)没执行或报错
  • D. 清理脚本执行报错
  • E. 内存 / 缓存清理导致性能问题

二、磁盘清理但空间未释放(最常见)

现象

df -h   # 显示 100%
du -sh /*  # 总和使用远小于 df

原因

文件被删除,但仍有进程占用

排查命令

# 查看被删除但仍被占用的文件
lsof | grep deleted

# 或
find /proc/*/fd -ls 2>/dev/null | grep deleted

解决

  • 重启占用进程
  • 或 truncate 文件(不要 rm)
> /path/to/file

三、清理日志 / 临时文件导致问题

常见误删

  • /var/log/*
  • /tmp/*
  • /var/lib/*

排查思路

  1. 看服务是否依赖这些文件
journalctl -xe
systemctl status xxx
  1. 检查文件是否被误删
ls -l /var/log
  1. 重建空文件并授权
touch /var/log/xxx.log
chown user:group /var/log/xxx.log

四、cleanup 定时任务未执行

1. cron 排查

crontab -l
systemctl status cron
grep cron /var/log/syslog

2. systemd timer 排查

systemctl list-timers
systemctl status cleanup.service
journalctl -u cleanup.service

3. 脚本无执行权限

ls -l /path/cleanup.sh
chmod +x /path/cleanup.sh

五、cleanup 脚本报错排查

调试脚本

bash -x cleanup.sh

常见错误

  • 使用了未定义变量
  • rm -rf 路径为空 → 删根
  • 权限不足

安全写法建议

rm -rf "${DIR:?}"/*

六、内存 / 缓存清理问题

手动清理缓存

sync
echo 3 > /proc/sys/vm/drop_caches

问题表现

  • 清理后 CPU 飙升(重新读盘)
  • OOM(误杀进程)

排查

free -h
dmesg | grep oom

七、推荐的标准 cleanup 工具

避免手写风险:

  • logrotate
  • systemd-tmpfiles
  • apt autoremove
  • bleachbit(桌面)

八、排查清单(速查)

✅ df vs du 不一致 → lsof deleted
✅ 服务异常 → journalctl
✅ 定时任务 → cron / timer 日志
✅ 脚本问题 → bash -x
✅ 权限问题 → ls -l / chmod


如果你能补充:

  • 具体做的 cleanup 操作
  • 报错信息
  • 使用的系统(CentOS / Ubuntu / Alpine)

我可以给你更精确的排查步骤

0