温馨提示×

如何排查linux cleanup问题

小樊
36
2026-09-23 17:27:01
栏目: 智能运维

“Linux cleanup 问题”含义比较广,常见包括:磁盘空间异常、临时文件未清理、日志爆满、内存/缓存未释放、僵尸进程、systemd 清理失败、容器/镜像堆积等。下面给你一套通用排查思路和命令,你可以按场景选用。


一、先确认“清理的是什么”

先明确是哪一类问题:

  • 磁盘空间没释放?
  • 日志/临时文件太多?
  • 内存没回收?
  • 某个 cleanup 脚本/服务失败?
  • 容器/镜像/包缓存堆积?

二、磁盘空间类排查(最常见)

1. 看整体磁盘使用

df -h

2. 看哪个目录占用大

du -sh /* 2>/dev/null
du -sh /var/* 2>/dev/null

3. 找大文件

find / -type f -size +100M 2>/dev/null

4. 已删除但仍在占用空间(很常见)

lsof | grep deleted

常见于日志被删但进程仍持有句柄,需重启进程或清空文件:

: > /var/log/xxx.log

5. inode 用光(磁盘未满但写不进)

df -i

三、日志 & 临时文件清理问题

1. 日志位置

/var/log
journalctl

2. 清理 systemd 日志

journalctl --disk-usage
journalctl --vacuum-size=100M

3. 临时文件

/tmp
/var/tmp

手动清理(谨慎):

rm -rf /tmp/*

四、内存 & 缓存清理问题

1. 看内存

free -h
top

2. 缓存是否正常

cat /proc/meminfo

清理缓存(一般不建议):

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

五、进程 & 僵尸进程

1. 看异常进程

ps aux
top

2. 僵尸进程

ps aux | awk '$8 ~ /Z/'

六、包 / 容器 cleanup 问题

1. apt(Debian/Ubuntu)

apt-get clean
apt-get autoremove

2. yum(CentOS)

yum clean all

3. Docker

docker system df
docker system prune -a

七、systemd / 定时任务清理失败

1. 看 cleanup 服务状态

systemctl status systemd-tmpfiles-clean
journalctl -u systemd-tmpfiles-clean

2. 定时任务

crontab -l
cat /etc/cron.daily/*

八、推荐的标准排查流程(总结)

  1. df -h → 是否磁盘满
  2. du / find → 找大文件
  3. lsof | grep deleted → 删了但没释放
  4. journalctl → 看清理失败原因
  5. 对应清理(日志 / tmp / 容器 / 包)
  6. 查 systemd / cron 是否执行失败

如果你能补充:

  • 具体现象(磁盘满?脚本报错?)
  • Linux 发行版
  • 是否是服务器 / 容器 / 云环境

我可以直接给你针对性的排查命令

0