在 CentOS 上查找已用空间

cpj*_*s44 7 linux centos

我有几台接近容量的服务器,但是我似乎无法找到空间正在消耗的地方?当我运行时:

[root@server /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                       40G   38G   76M 100% /
tmpfs                 929M     0  929M   0% /dev/shm
/dev/sda1             485M   32M  428M   7% /boot
Run Code Online (Sandbox Code Playgroud)

我可以看到 / mount 正在填满,所以我然后运行:

[root@server /]# sudo ls | xargs du -hs
5.8M    bin
22M     boot
192K    dev
25M     etc
36K     home
122M    lib
19M     lib64
16K     lost+found
4.0K    media
4.0K    mnt
4.0K    opt
0       proc
124K    root
14M     sbin
0       selinux
4.0K    srv
0       sys
54M     tmp
749M    usr
61M     var
Run Code Online (Sandbox Code Playgroud)

并且看不到任何使用大量空间的真实目录。最大的一个是 749M 的 /usr。

有人可以建议我如何找出所有这些空间被咀嚼的地方吗?谢谢。

guz*_*son 10

通常,发生这种情况的原因是某些进程在已删除(未链接)的文件上保持文件句柄处于打开状态。如果是这种情况,您可以使用 找到它们lsof,例如:

$ sudo lsof +L1
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NLINK    NODE NAME
tuned   869 root    7u   REG  202,1     4096     0 4194380 /tmp/ffiGemRJt (deleted)
$
Run Code Online (Sandbox Code Playgroud)

如果您发现已删除的文件占用了大量空间,则可能需要重新启动使文件句柄保持打开状态的违规进程。

  • 谢谢。就是这样。服务器上的 ngninx 正在占用空间。重新启动服务,一切都很好。 (2认同)