我正在运行 Ubuntu 服务器,自从今天晚上重新启动它以来,我没有收到错误消息Cannot write to '' (No space left on device)
。
之前我确实解压了一个大目录,其中/root
创建了大约 100 个文件,然后我使用 删除了这些文件rm /root/*
。我在执行此操作之前确实检查过ls
,其中的文件/root
正是我想要删除的文件。我在这里做错了什么吗?
以下是一些输出:
DF-H
root@localhost:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda 47G 47G 0 100% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
devtmpfs 494M 8.0K 494M 1% /dev
none 99M 192K 99M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 495M 0 495M 0% /run/shm
none 100M 0 100M 0% /run/user
DF-我
root@localhost:~# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/xvda 3129344 52147 3077197 2% /
none 126527 2 126525 1% /sys/fs/cgroup
devtmpfs 126232 1410 124822 2% /dev
none 126527 792 125735 1% /run
none 126527 4 126523 1% /run/lock
none 126527 1 126526 1% /run/shm
none 126527 2 126525 1% /run/user
du-Pshx/*2>/dev/null
root@localhost:~# du -Pshx /* 2>/dev/null
9.1M /bin
4.0K /boot
4.0K /dev
6.8M /etc
31M /home
29M /lib
4.0K /lib64
16K /lost+found
8.0K /media
4.0K /mnt
4.0K /opt
0 /proc
76K /root
192K /run
7.6M /sbin
4.0K /srv
0 /sys
12K /tmp
611M /usr
541M /var
由于我没有主意,有人可以在这里提出一些建议吗?
答案1
删除文件的魔力。只要应用程序打开了文件,它就不会被真正删除。当这种情况发生时,罪魁祸首通常是守护进程,它保存着一个日志文件或临时打开的文件,而你(或 logrotate)早已删除了它。
Shane Madden 给出的命令将允许您找到这样的文件:
find /proc/*/fd -ls | grep '(deleted)'
以下是我的机器上的输出摘录:
348233 0 lrwx------ 1 dennis dennis 64 jun 22 16:15 /proc/5623/fd/25 -> /tmp/vte1D81HX\ (deleted)
348238 0 lrwx------ 1 dennis dennis 64 jun 22 16:15 /proc/5623/fd/30 -> /tmp/vteYAG3HX\ (deleted)
348239 0 lrwx------ 1 dennis dennis 64 jun 22 16:15 /proc/5623/fd/31 -> /tmp/vteP7E3HX\ (deleted)
348240 0 lrwx------ 1 dennis dennis 64 jun 22 16:15 /proc/5623/fd/32 -> /tmp/vte4D91HX\ (deleted)
348243 0 lrwx------ 1 dennis dennis 64 jun 22 16:15 /proc/5623/fd/35 -> /tmp/vteU0VWHX\ (deleted)
因此,进程 5623 打开了一些临时文件。让我们找出它们是什么:
$ cat /proc/5623/cmdline | tr '\0' ' ' ; echo
/usr/bin/python /usr/bin/terminator
一旦您发现哪个进程打开了大量已删除的文件或大型已删除文件,请重新启动它以清除该情况。