某天打开公司官网发现无法访问。
于是乎去看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 ,完美解决~
结束
感谢收看。