ディスクに空き容量がありません

ディスクに空き容量がありません

私は 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: 書き込みエラー: デバイスに空き容量がありませんは役に立たず、むしろ悪化させます。ターミナルに入り、フォルダ名を部分的に入力して を押すと、次のメッセージが表示Tab されます。

cd Pybash: cannot create temp file for here-document: No space left on device

ただ書きたかっただけ

cd Python

編集: の出力は次のsudo du -hxd1 /とおりです:

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 /

答え1

ここで問題になるのはスペースではありません。ディレクトリに非常に多くの空の (またはほぼ空の) ファイルがあります。各ファイルは inode を占有し、すべて使用済みです。そのディレクトリを見つけます。

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

(これは root として実行する必要があります)。これにより、多数のファイルを含む 1 つのディレクトリがリストされる可能性があります。inode を使い果たしたファイルが見つかるまでドリルダウンします。それらのファイルをすべて削除します。これで、当面は問題ありません。もちろん、これらのファイルがどこから来るのかは別の話です。

答え2

からわかるようにdf -h、ルート パーティションにはまだ空き領域があります。ただし、df -iは inode が不足していることを示しています。私のコンピュータでは、ルート パーティションに 7.3G が使用されていますが、使用されている inode は 320,000 個だけです。そのため、どこかに非常に小さなファイルが多数存在し、それが邪魔をしている可能性があります。

場所については、例えば以下を参照のこと。Stack Exchange - inode が使用されている場所を見つけるそのページから次のことを試してみます:

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

どちらの場合も、使用している inode の数によって順序付けられたディレクトリのリストが表示されます。おそらく、非常に大きな数値を持つディレクトリが見つかるでしょう (おそらく/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
...

より簡単なコマンドの説明を以下に示します。 は、 sudodu コマンドを root として実行するために必要です。これにより、通常のユーザーが読み取れない可能性のあるフォルダー内のファイルを見つけることができます。 は、 du /ルート ディレクトリ のディスク使用量を示します/。 また、 --inodesinode 使用量を一覧表示するように指示し、-Sサブディレクトリではなくディレクトリ自体のファイルのみを一覧表示し、-xファイル システムの境界を越えないように指示します (問題は明らかに 上で/、 ではないため、たとえば/scratch)。次に、そのコマンドの出力を にパイプして、sort最も問題のあるファイルを見つけます。-r並べ替えを逆にして、最大のものが先頭になるようにし、-hアルファベット順ではなく数値順に並べ替えます。最後に、head -n 50最初の 50 行 (つまり、最も問題のある 50 件) のみを出力します。


より複雑なコマンドの説明を次に示します。 は、 sudofind コマンドを root として実行するために必要です。これにより、通常のユーザーが読み取れない可能性のあるフォルダー内のファイルを検索できます。 は、 find /ルート ディレクトリ のすべてのファイルのリストを提供します/。 ;ファイルシステムの境界を越えないように-xdev指示しますfind(問題は に確実に存在し/、 には存在しないため、たとえば/scratch)。 ;-printf '%h\0'ゼロ バイトで終わるディレクトリ名を出力します。 次に、そのコマンドの出力を にパイプしてsort -zuniq -cz各ディレクトリが出力された回数 (つまり、各ディレクトリにファイル数がいくつあるか) をカウントします。 は、ソートされたリストが必要なsortため、ここで必要ですuniq。 次に、最も問題のあるファイルを見つけるためにソートします。 ;-rソートを逆にして、最大のファイルが先頭になるようにし、-nアルファベット順ではなく数値順にソートします。 は、 tr '\0' '\n'ゼロ バイトを新しい行に置き換えます。 最後に、head -n 50は最初の 50 行 (つまり、最も問題のある 50 件) のみを出力します。

関連情報