На этот вопрос уже есть ответ здесь:
Я использую Ubuntu 14.04. В течение некоторого времени я не мог запускать больше программ одновременно. Вот что дает df -h
:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 29G 25G 3.4G 88% /
none 4.0K 0 4.0K 0% /sys/fs/cgroup
udev 16G 4.0K 16G 1% /dev
tmpfs 3.2G 724K 3.2G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 16G 59M 16G 1% /run/shm
none 100M 40K 100M 1% /run/user
/dev/sda2 438G 138M 416G 1% /scratch
AFS 8.6G 0 8.6G 0% /afs
и от df -i
:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 1875968 1875968 0 100% /
none 4106915 11 4106904 1% /sys/fs/cgroup
udev 4103190 499 4102691 1% /dev
tmpfs 4106915 524 4106391 1% /run
none 4106915 3 4106912 1% /run/lock
none 4106915 122 4106793 1% /run/shm
none 4106915 27 4106888 1% /run/user
/dev/sda2 29138944 709 29138235 1% /scratch
AFS 9000000 0 9000000 0% /afs
Я также попробовал предложение здесь: bash: echo: write error: No space left on device , не помогает, на самом деле это делает его хуже. Теперь, если я вхожу в терминал и частично пишу имя папки, я нажимаю Tab и получаю:
cd Pybash: cannot create temp file for here-document: No space left on device
там, где я только что хотел написать
cd Python
Edit: The output of sudo du -hxd1 /
is :
1.5G /var
22G /usr
18M /etc
16K /lost+found
36K /home
349M /opt
68K /tmp
9.7M /bin
4.2M /libx32
12K /.config
2.5M /root
4.0K /mnt
4.0K /lib64
13M /sbin
81M /boot
505M /lib
3.5M /lib32
12K /media
4.0K /srv
25G /
Пространство не является проблемой здесь. У Вас есть каталог с очень многими, освобождают (или почти пустой) файлы. Каждый из них берет inode, и Вы использовали их всех. Найдите что каталог:
for i in /* ; do echo "$i" ; find "$i" | wc -l ; done
(Необходимо сделать это как корень). Это, вероятно, перечислит один каталог с большим количеством файлов. Выполните развертку, пока Вы не находите файлы, которые истощили Ваш inodes. Удалите все те файлы. Тогда Вы будете в порядке в настоящий момент. То, куда эти файлы прибывают из, является, конечно, другой историей.
Поскольку Вы видите от df -h
, Вы все еще имеете пространство в запасе на своем корневом разделе. Однако df -i
шоу у Вас закончился inodes. На моем компьютере я имею 7.3G используемый на моем корневом разделе, но только 320 000 inodes использовали, таким образом, у Вас, вероятно, есть много очень маленьких файлов, забивающих вещи где-нибудь.
Для обсуждения где, посмотрите, например, Exchange Стека - Находит, где inodes используются. Я попробовал бы следование из той страницы:
sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50
Если Вы находитесь на более поздней версии Ubuntu (например, 15.10), то эта более короткая команда могла бы также быть быстрее:
sudo du / --inodes -xS | sort -rh | head -n 50
Любой даст Вам список каталогов, заказанных тем, сколько inodes они используют. Вы, вероятно, найдете один с очень высоким количеством (вероятно, чтобы быть в /var
где-нибудь). Это должно дать общее представление Вам, которых файлов можно удалить, но если у Вас есть какие-либо вопросы, действительно спросите назад здесь сначала.
Как ссылка для того, что могло бы быть нормальным на моем компьютере (под управлением Ubuntu 15.10), я получаю следующий вывод от той команды:
3297 /usr/share/app-install/desktop
3022 /usr/share/man/man3
2325 /usr/bin
2149 /usr/share/man/man1
2104 /usr/share/app-install/icons
1816 /usr/lib/x86_64-linux-gnu
1089 /usr/src/linux-headers-4.2.0-19/include/linux
1089 /usr/src/linux-headers-4.2.0-18/include/linux
1089 /usr/src/linux-headers-4.2.0-16/include/linux
...
Вот объяснение более простой команды. sudo
необходим для выполнения команды du как корня, таким образом, мы можем найти файлы в папках обычный пользователь не смог читать. du /
дает Использование диска корневого каталога /
; --inodes
говорит этому перечислять inode использование, -S
только перечислять файлы в самом каталоге а не в подкаталогах, и -x
не пересечь границы файловой системы (поскольку Ваша проблема определенно включена /
а не на, например, /scratch
). Затем мы передаем вывод по каналу той команды к sort
найти худших преступников; -r
инвертирует вид, таким образом, самые большие наверху, и -h
отсортируйте численно и не в алфавитном порядке. Наконец, head -n 50
только производит первые 50 строк (т.е. худшие 50 преступников).
Вот объяснение более сложной команды. sudo
необходим для выполнения команды находки как корня, таким образом, мы можем найти файлы в папках обычный пользователь не смог читать. find /
дает список всех файлов на корневом каталоге /
; -xdev
говорит find
не пересечь границы файловой системы (поскольку Ваша проблема определенно включена /
а не на, например, /scratch
); -printf '%h\0'
печатает имя каталога, заканчивающееся нулевым байтом. Затем мы передаем вывод по каналу той команды к sort -z
и затем uniq -cz
рассчитывать, сколько раз был распечатан каждый каталог (т.е. сколько файлов находится в каждом каталоге); sort
необходим здесь с тех пор uniq
нуждается в отсортированном списке. Затем мы сортируем для нахождения худших преступников; -r
инвертирует вид, таким образом, самые большие наверху, и -n
отсортируйте численно и не в алфавитном порядке. tr '\0' '\n'
замены обнуляют байты с новыми строками. Наконец, head -n 50
только производит первые 50 строк (т.е. худшие 50 преступников).