Linux-磁盘爆满

工作 / 2022-03-24

某天打开公司官网发现无法访问。
于是乎去看Linux 发现了

-bash: cannot create temp file for here-document: No space left on device

设备上没有剩余空间,磁盘满了。
于是乎使用 df -h 先排查那个目录最大

[root@zwy ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  40G   0G  100% /
devtmpfs        858M     0  858M   0% /dev
tmpfs           868M     0  868M   0% /dev/shm
tmpfs           868M  504K  867M   1% /run
tmpfs           868M     0  868M   0% /sys/fs/cgroup
tmpfs           174M     0  174M   0% /run/user/0

然后一步一步排查 / 目录下那个文件占用硬盘最大

[root@zwy ~]# du -sh /*
0       /bin
132M    /boot
0       /dev
56M     /etc
40G     /home
0       /lib
0       /lib64
16K     /lost+found
4.0K    /media
4.0K    /mnt
155M    /opt
du: cannot access ‘/proc/5986/task/5986/fd/4’: No such file or directory
du: cannot access ‘/proc/5986/task/5986/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/5986/fd/4’: No such file or directory
du: cannot access ‘/proc/5986/fdinfo/4’: No such file or directory
0       /proc
12M     /root
504K    /run
0       /sbin
4.0K    /srv
0       /sys
12M     /tmp
4.5G    /usr
824M    /var

很明显了 只需要 继续使用 du -sh 来排查下级文件 找到罪魁祸首就可以了
使用 rm-rf 删除即可

然后发现
在终端输入:cd /ho 按tab键时,显示错误:

bash: cannot create temp file for here-document: No space left on device

没有磁盘空间,不应该呀 我都删除了最大的那个文件。
再去查询一下 原来还要刷新一下日志文件

service rsyslog restart
或者
systemctl restart rsyslog

后续,第二天又过来再次发现了磁盘又又爆满了,不应该呀,我已经删除了大文件了呀。
故技重施,不行了, df -h 虽然 / 根目录依旧显示爆满,但是使用 du -sh 排查下级目录的时候发现,总的数量加起来都没有 40G呀,为什么。
用lsof检查后才发现原因是,有文件被删除,而进程还活着,因而造成还占用空间的现象。因此,需要把这些僵尸进程删除掉,命令如下:

lsof | grep delete | awk -F ' ' '{ print $2}'|xargs kill -9

命令说明:

lsof是列出进程号;grep 过滤其中带删除标识的;awk是截取, print $2截取第二列; xargs是相当于把后面 kill -9的命令放到最前面执行的意思。

最后,执行完命令后查看, df -h ,完美解决~

结束
感谢收看。