web-dev-qa-db-ja.com

ディスクにスペースがありません

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

編集: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 /
2
Qubix

ここではスペースは問題ではありません。非常に多くの空の(または空に近い)ファイルがあるディレクトリがあります。それぞれがiノードを取り、それらすべてを使用しました。そのディレクトリを見つけます:

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

(ルートとしてこれを行う必要があります)。これにより、1つのディレクトリに多数のファイルがリストされる可能性があります。 iノードを使い果たしたファイルが見つかるまでドリルダウンします。それらのファイルをすべて削除します。その後、今のところは大丈夫です。これらのファイルの出所はもちろん、別の話です。

3
Jos

df -hからわかるように、ルートパーティションにまだスペースが残っています。ただし、df -iは、iノードが不足していることを示しています。私のコンピューターでは、ルートパーティションで7.3Gを使用していますが、使用しているiノードは320,000のみであるため、おそらく非常に小さなファイルがたくさんあり、どこかに詰まっています。

どこでの議論については、例えば Stack Exchange-iノードが使用されている場所を見つける 。そのページから次のことを試してみます。

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

どちらも、使用しているiノードの数順にディレクトリのリストを表示します。おそらく非常に高い番号のもの(おそらく/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はiノードの使用をリストするように指示し、-Sはサブディレクトリではなくディレクトリ自体のファイルのみをリストし、-xはファイルシステムの境界を越えないようにします(間違いなく/とオンではありません。たとえば、/scratch)。次に、そのコマンドの出力をsortにパイプして、最悪の犯罪者を見つけます。 -rは並べ替えを逆にして最大のものが一番上になり、-hは数字ではなくアルファベット順に並べ替えます。最後に、head -n 50は最初の50行(つまり、最悪の50人の違反者)のみを出力します。


より複雑なコマンドの説明を次に示します。 Sudoは、rootとしてfindコマンドを実行するために必要なため、通常のユーザーが読み取ることができないフォルダー内のファイルを検索できます。 find /は、ルートディレクトリ上のすべてのファイルのリストを提供します/; -xdevfindにファイルシステムの境界を越えないように指示します(問題は間違いなく/であり、たとえば/scratchではありません)。 -printf '%h\0'は、0バイトで終わるディレクトリ名を出力します。次に、そのコマンドの出力をsort -zにパイプしてからuniq -czにパイプして、各ディレクトリが印刷された回数(つまり、各ディレクトリにあるファイルの数)をカウントします。 sortにはソートされたリストが必要なため、uniqが必要です。次に、最悪の犯罪者を見つけるためにソートします。 -rは並べ替えを逆にして最大のものが一番上になり、-nは数字ではなくアルファベット順に並べ替えます。 tr '\0' '\n'は、ゼロバイトを新しい行に置き換えます。最後に、head -n 50は最初の50行(つまり、最悪の50人の違反者)のみを出力します。

1
Gsxr1k