No more space on disk [duplicate]

На этот вопрос уже есть ответ здесь:

Я использую 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 /
2
задан 13 April 2017 в 15:23

2 ответа

Пространство не является проблемой здесь. У Вас есть каталог с очень многими, освобождают (или почти пустой) файлы. Каждый из них берет inode, и Вы использовали их всех. Найдите что каталог:

for i in /* ; do echo "$i" ; find "$i" | wc -l ; done

(Необходимо сделать это как корень). Это, вероятно, перечислит один каталог с большим количеством файлов. Выполните развертку, пока Вы не находите файлы, которые истощили Ваш inodes. Удалите все те файлы. Тогда Вы будете в порядке в настоящий момент. То, куда эти файлы прибывают из, является, конечно, другой историей.

3
ответ дан 2 December 2019 в 02:20

Поскольку Вы видите от 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 преступников).

1
ответ дан 2 December 2019 в 02:20

Другие вопросы по тегам:

Похожие вопросы: