J'utilise Ubuntu 14.04. Pendant un certain temps, je n'ai pas pu exécuter plus de programmes simultanément. Voici ce que df -h
donne:
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
et de 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
J'ai également essayé la suggestion ici: bash: echo: erreur d'écriture: il ne reste plus d'espace sur le périphérique , cela n'aide en rien, en fait, c'est pire. Maintenant, si j'entre dans le terminal et écris partiellement le nom d'un dossier, j'appuie sur Tab et obtenir:
cd Pybash: cannot create temp file for here-document: No space left on device
où je voulais juste écrire
cd Python
Edit: Le résultat de Sudo du -hxd1 /
est:
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 /
L'espace n'est pas le problème ici. Vous avez un répertoire avec beaucoup de fichiers vides (ou presque-vides). Chacune d'elles prend un inode et vous les avez toutes utilisées. Trouvez ce répertoire:
for i in /* ; do echo "$i" ; find "$i" | wc -l ; done
(Vous devriez le faire en tant que root). Cela listera probablement un répertoire avec un grand nombre de fichiers. Détaillez jusqu'à ce que vous trouviez les fichiers qui ont épuisé vos inodes. Supprimer tous ces fichiers. Ensuite, vous serez OK pour le moment. La provenance de ces fichiers est, bien sûr, une autre histoire.
Comme vous pouvez le voir sur df -h
, il vous reste encore de la place sur votre partition racine. Cependant, df -i
indique que vous n'avez plus d'inodes. Sur mon ordinateur, la version 7.3G est utilisée sur ma partition racine, mais seulement 320 000 inodes sont utilisés. Vous avez donc probablement beaucoup de très petits fichiers qui encombrent des objets quelque part.
Pour une discussion sur où, voir, par exemple: Stack Exchange - Trouvez où les inodes sont utilisés . Je voudrais essayer ce qui suit à partir de cette page:
Sudo find / -xdev -printf '%h\0' | sort -z | uniq -cz | sort -nrzk 1 | tr '\0' '\n' | head -n 50
Si vous utilisez une version plus récente d’Ubuntu (par exemple, 15.10), cette commande plus courte pourrait également être plus rapide:
Sudo du / --inodes -xS | sort -rh | head -n 50
L'un ou l'autre vous donnera une liste de répertoires classés par nombre d'inodes qu'ils utilisent. Vous en trouverez probablement un avec un nombre très élevé (susceptible d'être dans /var
quelque part). Cela devrait vous donner une idée des fichiers que vous pouvez supprimer, mais si vous avez des questions, demandez d'abord ici.
En tant que référence pour ce qui pourrait être normal, sur mon ordinateur (exécutant Ubuntu 15.10), j'obtiens le résultat suivant à partir de cette commande:
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
...
Voici une explication de la commande plus simple. Sudo
est nécessaire pour exécuter la commande du en tant qu'utilisateur root afin de pouvoir rechercher les fichiers dans les dossiers que l'utilisateur normal ne pourrait pas lire. du /
donne l'utilisation du disque du répertoire racine /
; --inodes
lui dit de répertorier les utilisations d'inode, -S
ne répertorie que les fichiers du répertoire lui-même et non des sous-répertoires, et -x
de ne pas dépasser les limites du système de fichiers (votre problème est définitivement lié à /
et pas sur, par exemple, /scratch
). Ensuite, nous transmettons la sortie de cette commande à sort
pour rechercher les pires contrevenants; -r
inverse le tri pour que les plus grands soient en haut, et -h
effectue un tri numérique et non alphabétique. Enfin, head -n 50
ne renvoie que les 50 premières lignes (c’est-à-dire les 50 pires délinquants).
Voici une explication de la commande plus compliquée. Sudo
est nécessaire pour exécuter la commande find en tant qu'utilisateur root. Nous pouvons donc rechercher les fichiers dans les dossiers que l'utilisateur normal ne peut pas lire. find /
donne une liste de tous les fichiers du répertoire racine /
; -xdev
indique à find
de ne pas dépasser les limites du système de fichiers (car le problème est sans aucun doute sur /
et non sur, par exemple, /scratch
); -printf '%h\0'
imprime le nom du répertoire se terminant par un octet nul. Ensuite, nous transmettons le résultat de cette commande à sort -z
, puis à uniq -cz
pour compter le nombre de fois que chaque répertoire a été imprimé (c.-à-d. Combien de fichiers se trouvent dans chaque répertoire); sort
est nécessaire ici car uniq
nécessite une liste triée. Ensuite, nous trions pour trouver les pires délinquants; -r
inverse le tri pour que les plus grands soient en haut, et -n
effectue un tri numérique et non alphabétique. tr '\0' '\n'
remplace zéro octet par de nouvelles lignes. Enfin, head -n 50
ne renvoie que les 50 premières lignes (c’est-à-dire les 50 pires délinquants).