Arr*_*rry 15 disk-usage linux-mint
我正在运行 Linux Mint 14 Nadia。Linux分区有10G。系统启动时,du
报告 80% 的使用率。然后使用率缓慢增长,直到达到 100%,系统变得无法使用。(它可能在几天或几周内发生)。重新启动后,使用率重置为 80%。
最奇怪的是,du
没有任何变化。
以下是这些命令的输出(省略了 Windows 和外部驱动器分区):
# --- Just after reboot ---
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.8G 7.3G 2.0G 80% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 428M 292K 428M 1% /dev
tmpfs 88M 1.3M 87M 2% /run
none 5.0M 0 5.0M 0% /run/lock
none 437M 288K 437M 1% /run/shm
none 100M 12K 100M 1% /run/user
$ sudo du -x -d1 -h /
186M /opt
512M /var
11M /sbin
556K /root
1.3G /home
613M /lib
8.0K /media
4.6G /usr
16K /lost+found
111M /boot
39M /etc
4.0K /mnt
60K /tmp
9.1M /bin
4.0K /srv
7.3G / # <-- note this
# --- After some time ---
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.8G 9.1G 199M 98% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 428M 292K 428M 1% /dev
tmpfs 88M 1.3M 87M 2% /run
none 5.0M 0 5.0M 0% /run/lock
none 437M 27M 411M 7% /run/shm
none 100M 28K 100M 1% /run/user
$ sudo du -x -d1 -h /
186M /opt
511M /var
11M /sbin
556K /root
1.4G /home
613M /lib
8.0K /media
4.6G /usr
16K /lost+found
111M /boot
39M /etc
4.0K /mnt
520K /tmp
9.1M /bin
4.0K /srv
7.3G / # <-- note this
Run Code Online (Sandbox Code Playgroud)
(注:我使用的是休眠模式,休眠后使用率保持不变,重启后重置为80%。)
我如何跟踪占用空间的内容?
我读过这个问题。我还在黑暗中。如何找出导致此行为的程序?
编辑后:找到了。该空间由内核日志声明,由dmesg
. 它填满是因为我的机器以每秒 5 次的速度产生错误。(它与此错误有关。)让未来遇到类似问题的读者 - 缓慢填充看不见的磁盘空间du
- 不要忘记尝试dmesg
寻找原因。
Hau*_*ing 20
重复执行
sudo du -x -d1 -h /
Run Code Online (Sandbox Code Playgroud)
(在目录树下)应该告诉您空间消耗在哪里。这可能无需进一步调查就可以解释是哪个应用程序导致了这种情况。
隐形文件
如果du
未显示这些文件,则可能的一种方法是删除文件。文件(或者更确切地说:它的名称,即它在目录中的条目)可以在文件仍在使用时删除。只要有一个有效的文件描述符指向这个文件,它就会覆盖卷上的空间(如果它不是一个空文件......)。
cat >file &
ls -l file
rm file
ls -l file
# PID of cat is 19834
ls -l /proc/19834/fd
lrwx------ 1 hl hauke 64 11. Feb 19:16 0 -> /dev/pts/0
l-wx------ 1 hl hauke 64 11. Feb 19:16 1 -> /crypto/home/hl/tmp/file (deleted)
lrwx------ 1 hl hauke 64 11. Feb 19:15 2 -> /dev/pts/0
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令找到这些文件find
:
find /proc/ -mindepth 3 -maxdepth 3 \
-regex '/proc/[1-9][0-9]*/fd/[1-9][0-9]*' -type l -lname '*(deleted)' \
-printf '%p\n %l\n' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
它可能是一个单独的大文件或一堆较小的文件导致您的问题。现在我的系统上大约有 30 个这样的文件(只属于五个进程)。ls -l
显示这些文件的大小,但似乎不可能从find
.
终止进程后,空间df
再次可供文件系统 ( ) 使用。
ang*_*gus 10
使用类似的东西
lsof -s | grep deleted | sort -k 8
Run Code Online (Sandbox Code Playgroud)
查看哪些进程使已删除的文件保持打开状态。重要的字段是第二个 (PID) 和第八个(倒数第三个;文件大小)。
(注意重复的行,不要计算两次。检查 PID 和文件路径(最后一个字段)或 inode 编号(倒数第二个字段)。)
之后,如果您发现一个可能是罪魁祸首的进程,我们可以看看如何修复它。
find / -size +10000k -print0 | xargs -0 ls -l -h
Run Code Online (Sandbox Code Playgroud)
使用它递归地查找从 (root) 填充超过 10MB+ 的内容/
,并使用ls -l
in来显示它的大量详细信息xargs
。例如,如果您写入 1000000(2 个额外的零),您可以获得 1GB+。
du / -h --max-depth=1 | sort -h
Run Code Online (Sandbox Code Playgroud)
您也可以使用 du,然后手动挖掘它。
归档时间: |
|
查看次数: |
69511 次 |
最近记录: |