[linux]磁盘空间大,程序报警显示没有存储空间

背景:

当程序报警no space left时,如下图。

原因是因为磁盘空间不够了,没办法继续写入日志或者其他写入操作,导致无法运行。

通常的操作如下:

1.df -h 查看一下是那个磁盘不够用了,比如:

复制代码
#这里我发现,我的/目录已经被占用满了
[root@ecs-69298068-001 ~/sh]#  df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        99G   99G   0G  100% /

2.到/目录下,可以使用命令du -sh *,查看具体是哪个文件件,占用空间太大:

复制代码
[root@ecs-69298068-001 /]#  du -sh *
0	bin
141M	boot
0	dev
80K	dump.rdb
48M	etc
4.0K	home
0	lib
0	lib64
16K	lost+found
4.0K	media
4.0K	mnt
4.0G	opt
4.0K	optdata
du: cannot access 'proc/14257/task/14257/fd/3': No such file or directory
du: cannot access 'proc/14257/task/14257/fdinfo/3': No such file or directory
du: cannot access 'proc/14257/fd/3': No such file or directory
du: cannot access 'proc/14257/fdinfo/3': No such file or directory
0	proc
100K	res
1.7G	root
640K	run
0	sbin
4.0K	srv
0	sys
175M	titan
1.4M	tmp
3.1G	usr
9.2G	var

正常情况下,一步一步找到对应的目录,清理文件就对了,但是,我这里发生一个异常

明明各个空间的占用都不大,但是却显示/目录已经被使用完毕了。
这是由于服务器存在删除但未释放的文件!

举例:当我发现一个日志文件比较大的时候,我直接通过命令rm -rf删除它,执行之后,在控制台就看不见了,但是实际上因为程序还在执行,该文件还存在。

解决办法:执行lsof +L1 | grep '(deleted)' 命令,找到理应被删除的文件

复制代码
[root@ecs-69298068-001 /]#  lsof +L1 | grep '(deleted)'
systemd-j  1780  root  txt    REG    8,1   346280     0 401754 /usr/lib/systemd/systemd-journald;672c5865 (deleted)
dbus-daem  3436  dbus  txt    REG    8,1   223320     0 396200 /usr/bin/dbus-daemon;672c5865 (deleted)
systemd-l  3450  root  txt    REG    8,1   635848     0 401756 /usr/lib/systemd/systemd-logind;672c5865 (deleted)
dhclient   3747  root  txt    REG    8,1   424352     0 398227 /usr/sbin/dhclient;672c5865 (deleted)
dhclient   3846  root  txt    REG    8,1   424352     0 398227 /usr/sbin/dhclient;672c5865 (deleted)
agetty     4229  root  txt    REG    8,1    36936     0 401234 /usr/sbin/agetty;672c5865 (deleted)
agetty     4231  root  txt    REG    8,1    36936     0 401234 /usr/sbin/agetty;672c5865 (deleted)
mysqld     8498 mysql    5u   REG    8,1        0     0 526455 /tmp/ibuyzlie (deleted)
mysqld     8498 mysql    6u   REG    8,1        0     0 526457 /tmp/ibgnETXr (deleted)
mysqld     8498 mysql    7u   REG    8,1        0     0 526458 /tmp/ibaJ3rDF (deleted)
mysqld     8498 mysql    8u   REG    8,1        0     0 526459 /tmp/ib0l1M06 (deleted)
mysqld     8498 mysql   12u   REG    8,1        0     0 526460 /tmp/ibMay7Lk (deleted)
top       27154  root    0u   CHR  136,1      0t0     0      4 /dev/pts/1 (deleted)
top       27154  root    1u   CHR  136,1      0t0     0      4 /dev/pts/1 (deleted)
top       27154  root    3u   CHR  136,1      0t0     0      4 /dev/pts/1 (deleted)
java      30521  root  108w   REG    8,1 67108880     0 789660 /tmp/zookeeper/version-2/log.1 (deleted)
java      30868  root  107uW  REG    8,1        0     0 789662 /tmp/kafka-logs/.lock (deleted)

每一列对应的是:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NLINK NODE NAM

第7列SIZE/OFF是显示文件大小的,第二列的PID。

找到异常的文件,关闭对应的程序,kill -9 PID,然后重启即可。

相关推荐
源远流长jerry7 分钟前
DPDK 实现的轻量级 UDP 回显服务程序
linux·运维·服务器·网络·网络协议·ip
十六年开源服务商11 分钟前
WordPress建站公司技术支持服务全解析
运维·数据分析
A-刘晨阳17 分钟前
【Linux】Prometheus + Grafana的使用
linux·运维·grafana·prometheus·监控
Mr_Xuhhh18 分钟前
字节跳动面经
linux·服务器
JZC_xiaozhong34 分钟前
物料编码在ERP与其他系统中的冲突与解决
运维·自动化·mdm·流程自动化·主数据管理·数据孤岛解决方案·数据集成与应用集成
小李独爱秋1 小时前
计算机网络经典问题透视:试比较先进先出排队(FIFO)、公平排队(FQ)和加权公平排队(WFQ)的优缺点
服务器·计算机网络·算法·web安全·信息与通信·队列
早日退休!!!1 小时前
Linux内核内存布局:核心原理与工程实践
linux
宇钶宇夕1 小时前
ATV900系列变频器起重提升抱闸逻辑设置及源型接线指南
运维·自动化
哪里不会点哪里.1 小时前
Docker
运维·docker·容器
Learn Forever1 小时前
【Linux】iptables常用指令
linux·运维·服务器