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