1.使用df -h查看磁盘空间占用情况
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/vda2 98G 6.5G 87G 7% / tmpfs 1.9G 276K 1.9G 1% /dev/shm /dev/vda1 485M 31M 429M 7% /boot
df 命令说明
- df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
- 主要命令参数:
-a 全部文件系统列表
-h 方便阅读方式显示
-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地文件系统
-m 区块为1048576字节
2.使用 sudo du -s -h /* | sort -nr 命令查看那个目录占用空间大
由于篇幅省略部分内容展示
[root@localhost ~]# du -s -h /* | sort -nr du: cannot access `/proc/26503/task/26503/fd/5': No such file or directory du: cannot access `/proc/26503/task/26503/fdinfo/5': No such file or directory du: cannot access `/proc/26503/fd/5': No such file or directory du: cannot access `/proc/26503/fdinfo/5': No such file or directory 452K /dev 418M /usr 364K /tmp 258M /var 146M /lib 76K /root 75M /titan 44K /home 25M /etc 21M /boot 18M /lib64 16K /lost+found 9.0M /sbin 5.8M /bin 4.2G /app 4.0K /srv 4.0K /selinux 4.0K /mnt 4.0K /media 1.2G /opt 0 /sys 0 /proc
3.然后那个目录占用多 再通过sudo du -s -h /app/* | sort -nr 一层层排查,找到占用文件多的地方。[root@localhost ~]# du -s -h /app/* | sort -nr
810M /app/smp_app
734M /app/uav.bk.20181109.old.bk
505M /app/uav
501M /app/uav.bk.20181114.old.bk
391M /app/tomcatapp
99M /app/smp-extension
87M /app/software
35M /app/apache-tomcat-7.0.73
26M /app/redis
15M /app/apache-tomcat-8.5.9
4.0K /app/test
4.0K /app/caifu
1.1G /app/uc_app
du命令说明
- 显示文件或目录所占用的磁盘空间。
- 命令格式:du [option] 文件/目录
- -h 输出文件系统分区使用的情况,例如:10KB,10MB,10GB等
- -s 显示文件或整个目录的大小,默认单位是KB
Linux 查找占用空间最大的文件与目录:du -h --max-depth=1
sort命令说明
- 将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序。
参数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
4. 以上方法没有找到问题所在,那么可以使用 lsof | grep deleted 命令,看看是否删除掉的文件仍然被进程占用而没有进行实际删除
lsof命令说明
lsof(List Open Files) 用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件。
首先使用lsof来查看当前是否有进程打开/var/logmessages文件,如下:
# lsof |grep /var/log/messages syslogd 1283 root 2w REG 3,3 5381017 1773647 /var/log/messages (deleted)
这里显示syslogd占用了此文件,停止进程。之后重新启动进程,就OK了。