Erreurs de complétion par des onglets: bash: impossible de créer un fichier temporaire pour here-document: aucun espace disponible sur le périphérique

41

En utilisant la barre de tabulation, je continue à avoir cette erreur:

bash: impossible de créer un fichier temporaire pour here-document: aucun espace disponible sur le périphérique "

Des idées?

J'ai fait des recherches et de nombreuses personnes parlent du fichier / tmp, qui risque d'avoir un débordement. Quand j'exécute, df -hje reçois:

Filesystem      Size  Used Avail Use% Mounted on 
/dev/sda2       9.1G  8.7G     0 100% /
udev             10M     0   10M   0% /dev
tmpfs           618M  8.8M  609M   2% /run
tmpfs           1.6G     0  1.6G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.6G     0  1.6G   0% /sys/fs/cgroup
/dev/sda1       511M  132K  511M   1% /boot/efi
/dev/sda4       1.8T  623G  1.1T  37% /home
tmpfs           309M  4.0K  309M   1% /run/user/116
tmpfs           309M     0  309M   0% /run/user/1000

On dirait que le répertoire / dev / data est sur le point d'exploser, mais si je bascule:

$ du -sh /dev/sda2
0   /dev/sda2

Il semble que c'est vide.

Je suis nouveau dans Debian et je ne sais vraiment pas comment procéder. J'avais l'habitude d'accéder à cet ordinateur via ssh. Outre ce problème, j'ai plusieurs autres avec cet ordinateur, ils peuvent être liés, par exemple chaque fois que je veux entrer mon utilisateur en utilisant l'interface graphique (avec la racine cela fonctionne) je reçois:

Xsession: avertissement: impossible d'écrire dans / tmp: Xsession peut se fermer avec une erreur

lucasrodesg
la source
2
Vous voulez exécuter quelque chose comme du -hxd1 /, non du /dev/sda2. /dev/sda2n'existe pas vraiment sur le disque.
Muru

Réponses:

20

Votre système de fichiers racine est plein et votre répertoire temporaire (/ tmp, et / var / tmp d'ailleurs) est également plein. Un grand nombre de scripts et de programmes nécessitent un peu d’espace pour les fichiers de travail, même les fichiers verrouillés. Lorsque / tmp est inscriptible, de mauvaises choses se produisent.

Vous devez déterminer comment vous avez rempli le système de fichiers. Cela se produit généralement dans / var / log (vérifiez que vous parcourez les fichiers journaux). Ou / tmp peut être plein. Il existe cependant de nombreuses autres manières de remplir un disque.

du -hs /tmp /var/log

Vous voudrez peut-être re-partitionner pour donner à / tmp sa propre partition (c'est la méthode habituelle de le faire, mais si vous avez beaucoup de disque, tout va bien), ou le mapper en mémoire (ce qui le rendra très rapide mais commence à problèmes d’échange si vous surchargez les fichiers temporaires).

Miles Gillham
la source
Bonjour, j’ai examiné les deux commandes que vous suggérez et je dirais que / tmp et / var / log sont assez vides: 60K et 49M respectivement.
lucasrodesg
1
Re-bonjour. Je l'ai finalement eu. Je ne sais pas pourquoi j'ai placé tout le contenu de owncloud sous / var. Ça marche encore!
lucasrodesg
16

Vous pouvez également avoir perdu l'accès en écriture au /tmp/répertoire.

Cela devrait ressembler à ça:

ls -l / |grep tmp
drwxrwxrwt   7 root root  4096 Nov  7 17:17 tmp

Vous pouvez corriger les permissions comme ça:

chmod a+rwxt /tmp
dothebart
la source
Cela a fonctionné pour moi!
Joseph Chambers
3
C'est une utilisation inutile de grep. Essayez à la ls -ld /tmpplace.
un CVn
vous venez de mettre fin à une attaque de panique presque complète ... mérite d'être voté
sbeskur
11

Si quelqu'un arrive avec cette erreur alors que son disque n'est pas plein, vérifiez non seulement, dfmais aussi df -i. Il y a un nombre fixe d'inodes sur un système de fichiers, et chaque fichier en a besoin. Si vous avez juste des tonnes de petits fichiers, il est très facile pour votre système de fichiers de se remplir de ces petits fichiers alors qu'il reste encore beaucoup d'espace disponible sur le lecteur lorsque vous exécutez df.

Michael Speer
la source
C'était le problème que j'avais! Je n'arrêtais pas d'essayer de trouver ce qui occupait l'espace. Ce n'était pas le problème du tout. J'avais complètement utilisé les inodes. /dev/root 4980000 4980000 0 100% /Peut-être que le système devrait répondre avec un message d'erreur approprié?
ˆᵛˆ
3

Je devenais erreur, alors j'ai vu

[  672.995482] EXT4-fs (sda2): Remounting filesystem read-only
[  672.999802] EXT4-fs error (device sda2): ext4_journal_check_start:60: Detected aborted journal

J'ai pu le confirmer,

mount | grep -i sda2
/dev/sda2 on / type ext4 (ro,relatime,errors=remount-ro,data=ordered)
Evan Carroll
la source
2

Le moyen le plus rapide de localiser vos dossiers trop pleins consiste à réduire la taille du fichier de dossier en niveaux à partir du dossier racine. Vous commencez avec le dossier racine par:

sudo du -h --max-depth=1 /

Ensuite, vous augmentez la profondeur, c’est-à-dire les niveaux inférieurs:

sudo du -h --max-depth=2 /

OU - plus rapidement - vous regardez quel dossier a consommé le plus d’espace disque et faites de même sur ce dossier:

sudo du -h --max-depth=1 /home/<user>/<overfull-folder>

Une fois que vous l'avez trouvé, supprimez celui-ci:

rm -rf <path to overfull-folder>
Haricot agile
la source
1
avec de nombreux fichiers de sortie, il est agréable de les trier par taille avec sudo du -h --max-depth=1 / | sort -h(fichiers plus gros en bas ou sort -hrfichiers plus gros en haut)
wranvaud
0

Pour mon cas de cette même erreur, c’était un problème de cagefs puisque ce serveur était sur CloudLinux, avec cagefsctl --remount username

Zebouski
la source
-2

En effet, l'espace disque étant insuffisant, vous devez nettoyer les fichiers volumineux ou nettoyer le processus qui prend de l'espace:

  1. df -h Afficher l'espace disque
  2. du -sh /* Voir quel répertoire est le plus grand, étape par étape pour trouver des fichiers volumineux
  3. du -h --max-depth=1 trouver le plus gros fichier
zhang_kop
la source
Cela semble simplement régurgiter la réponse de Agile Bean à partir de juin 2018.
tripleee