linux磁盘已满,查看文件占用

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)

你可能感兴趣的:(linux磁盘已满,查看文件占用)