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 /
ここではスペースは問題ではありません。非常に多くの空の(または空に近い)ファイルがあるディレクトリがあります。それぞれがiノードを取り、それらすべてを使用しました。そのディレクトリを見つけます:
for i in /* ; do echo "$i" ; find "$i" | wc -l ; done
(ルートとしてこれを行う必要があります)。これにより、1つのディレクトリに多数のファイルがリストされる可能性があります。 iノードを使い果たしたファイルが見つかるまでドリルダウンします。それらのファイルをすべて削除します。その後、今のところは大丈夫です。これらのファイルの出所はもちろん、別の話です。
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 /
は、ルートディレクトリ上のすべてのファイルのリストを提供します/
; -xdev
はfind
にファイルシステムの境界を越えないように指示します(問題は間違いなく/
であり、たとえば/scratch
ではありません)。 -printf '%h\0'
は、0バイトで終わるディレクトリ名を出力します。次に、そのコマンドの出力をsort -z
にパイプしてからuniq -cz
にパイプして、各ディレクトリが印刷された回数(つまり、各ディレクトリにあるファイルの数)をカウントします。 sort
にはソートされたリストが必要なため、uniq
が必要です。次に、最悪の犯罪者を見つけるためにソートします。 -r
は並べ替えを逆にして最大のものが一番上になり、-n
は数字ではなくアルファベット順に並べ替えます。 tr '\0' '\n'
は、ゼロバイトを新しい行に置き換えます。最後に、head -n 50
は最初の50行(つまり、最悪の50人の違反者)のみを出力します。