J'ai rencontré un problème sur l'un de mes serveurs sous 16.04: il ne reste plus d'espace disque.
Je n'ai aucune idée de ce qui occupe l'espace. Existe-t-il une commande pour répertorier les tailles de répertoire actuelles, afin que je puisse parcourir et finir dans le répertoire occupant tout l'espace?
disk-usage
Karl Morrison
la source
la source
export DISPLAY=:0.0; ssh -Y <user>@<server> filelight
(remplacezfilelight
par votre outil préféré). Bien sûr, avec absolument aucun espace disponible, si vous n'avez pas déjà installé l'outil, vous devrez quand même utiliser quelque chose d'autre!Réponses:
Comme toujours sous Linux, il y a plus d'une façon de faire le travail. Toutefois, si vous devez le faire à partir de la CLI, voici ma méthode préférée:
Je commence par exécuter ceci en tant que root ou avec sudo:
Le grep consiste à limiter les lignes renvoyées à celles qui renvoient avec des valeurs comprises dans la plage des mégaoctets ou des gigaoctets. Si vos disques sont suffisamment volumineux, vous pouvez également ajouter
|T
des montants en téraoctets. Vous risquez d’obtenir des erreurs sur/proc
,/sys
et / ou/dev
puisque ce ne sont pas de vrais fichiers sur le disque. Cependant, il devrait toujours fournir une sortie valide pour le reste des répertoires en racine. Une fois que vous avez trouvé les plus gros, vous pouvez ensuite exécuter la commande à l’intérieur de ce répertoire afin de mieux cerner le coupable. Ainsi, par exemple, si/var
vous étiez le plus gros, vous pouvez le faire comme suit:Cela devrait vous conduire aux enfants à problèmes!
Considérations supplémentaires
Tandis que la commande ci-dessus va certainement faire l'affaire, j'ai eu quelques critiques constructives dans les commentaires ci-dessous qui ont souligné certaines choses que vous pourriez également inclure.
grep
I fourni pourrait entraîner la valeur occasionnelle « K » étant retourné si le nom du répertoire ou fichier a un G majuscule ou M. Si vous ne voulez absolument pas des répertoires d'une valeur K Révéler que vous voudriez en votre jeu regex pour être plus créatif et complexe. par exemplegrep -E "^[0-9\.]*[MG]"
Si vous savez quel lecteur est le problème et s'il contient d'autres lecteurs montés que vous ne voulez pas perdre de temps, y compris dans votre recherche, vous pouvez ajouter l'
-x
indicateur à votredu
commande. Description de la page de manuel de ce drapeau:Vous pouvez trier le résultat de la
du
commande de sorte que la valeur la plus élevée soit en bas. Il suffit d’ajouter ceci à la fin de la commande:| sort -h
la source
"^[0-9]*[.]*[0-9]*[MG]"
-x
option permettant dedu
rester sur ce lecteur (fourni sur la ligne de commande). Vous pouvez également effectuer unsort -h
tri direct des valeurs lisibles par l'homme en mégaoctets / gigaoctets. Je laisserais généralement cette--max-depth
option de côté et chercherais tout le disque de cette façon, en triant de manière appropriée pour obtenir les choses les plus importantes en bas./
), et en-x
me donnant la garantie de ne pas me tromper de choses. Si vous êtes/
plein et que vous avez un montage séparé/home
ou autre, l’utilisation-x
est quasiment une nécessité pour vous débarrasser des éléments non pertinents. Donc, je trouve que c'est juste plus facile de l'utiliser tout le temps, juste au cas où.Vous pouvez utiliser
ncdu
pour cela. Il fonctionne très bien.la source
curl http://path/to/ncdu | sh
, et il fonctionnera dans un cache stine IO en mémoire, mais cela nécessitera un peu de chance. il y a probablement un moyen de faire un disquesudo ncdu /
ligne de commande.sudo
parce que si vous ne mettez pas sudo, il ne signalera pas la taille des dossiers appartenant à la racine, et/
parce que si vous ne tapez pas, il ne signalera que de manière récurrente vers le bas du dossier dans lequel vous vous trouvezJ'utilise cette commande
sudo du -aBM -d 1 . | sort -nr | head -20
De temps en temps, je dois l'exécuter à partir du
/
répertoire, car j'ai placé quelque chose dans un emplacement étrange.la source
-d 1
commutateur (et généralement avecless
au lieu dehead -20
), de façon à obtenir une liste complète énumérée de manière récursive de tous les fichiers et répertoires triés par l'espace qu'ils consomment. Ainsi, si je vois un répertoire occuper beaucoup d’espace, je peux simplement faire défiler vers le bas pour voir si la plus grande partie de l’espace est effectivement occupée par un fichier ou un sous-répertoire spécifique. C'est un bon moyen de rechercher des fichiers et des répertoires inutiles à supprimer pour libérer de l'espace: faites simplement défiler l'écran jusqu'à ce que vous voyiez quelque chose que vous ne voulez pas conserver, supprimez-le et répétez l'opération.sort
attend simplement que la sortie soit terminée avant de commencer la sortie.Il existe déjà de nombreuses bonnes réponses sur les moyens de trouver des répertoires prenant le plus d’espace. Si vous avez des raisons de penser que le problème principal est le nombre de gros fichiers plutôt que de nombreux petits, vous pouvez utiliser quelque chose du genre
find / -size +10M
.la source
Je ne connais pas Ubuntu et je ne peux pas vérifier ma réponse, mais postez ici ma réponse basée sur mon expérience d'administrateur unix il y a longtemps.
Découvrez quel système de fichiers manque d'espace
listera tous les systèmes de fichiers, leur taille et leur espace libre. Vous ne perdez du temps que si vous étudiez des systèmes de fichiers disposant de suffisamment d'espace. Supposons que le système de fichiers complet est / myfilesystem. vérifiez la sortie df s'il existe des systèmes de fichiers montés sur des sous-répertoires de / myfilesystems. Si tel est le cas, les tâches suivantes doivent être adaptées à cette situation.
Découvrez combien d'espace est utilisé par les fichiers de ce système de fichiers
L'option -x peut être utilisée pour garantir que seuls les fichiers membres de ce système de fichiers sont pris en compte. Certaines variantes d'Unix (par exemple, Solaris) ne connaissent pas l'option -x pour du. Ensuite, vous devez utiliser des solutions de contournement pour trouver le du de votre système de fichiers.
Maintenant, vérifiez si le des fichiers visibles est approximativement la taille de l’espace utilisé affiché par df. Si tel est le cas, vous pouvez commencer à rechercher les fichiers / répertoires volumineux du système de fichiers / myfilesystem à nettoyer.
trouver les plus grands sous-répertoires d'un répertoire /.../dir
l'option -k oblige du à produire le sie en kilo-octets sans unité. Cela peut être la valeur par défaut sur certains systèmes. Ensuite, vous pouvez omettre cette option. Les fichiers / sous-répertoires les plus volumineux seront affichés au bas de la sortie.
Si vous avez trouvé un fichier / répertoire volumineux dont vous n’avez plus besoin, vous pouvez le supprimer de manière appropriée. Ne vous embêtez pas sur les petits répertoires en haut de la sortie. Cela ne résoudra pas votre problème si vous les supprimez. Si vous n’avez toujours pas assez d’espace, vous pouvez répéter l’étape 4 dans les sous-répertoires généraux affichés en bas de la liste.
Mais que se passe-t-il si la sortie du n'est pas approximativement l'espace disponible affiché par df?
Si la sortie du est plus grande, vous avez oublié un sous-répertoire dans lequel un autre système de fichiers est monté. Si la sortie du est beaucoup plus petite, les fichiers som ne figurent dans aucun répertoire inspecté. Il peut y avoir différentes raisons à son phénomène.
certains processus utilisent un fichier déjà supprimé. Par conséquent, ces fichiers ont été supprimés du répertoire et du ne peuvent pas les voir. Mais pour le système de fichiers, leurs blocs sont encore utilisés jusqu'à ce que les processus soient fermés. Vous pouvez essayer de trouver les processus pertinents (par exemple avec lsof) et les forcer à fermer ces fichiers (par exemple en arrêtant l'application ou en tuant les processus). Ou vous redémarrez simplement votre machine.
il y a des fichiers dans des répertoires qui ne sont plus visibles car sur l'un de leurs répertoires parents, un autre système de fichiers est monté. Donc, si vous avez un fichier / myfilesysem / subdir / bigfile et montez maintenant un autre système de fichiers sur / myfilesystem / subdir, vous ne pouvez plus voir ce fichier et
signalera une valeur qui ne contient pas la taille de / myfilesystem / subdir / bigfile. Le seul moyen de savoir s’il existe de tels fichiers est de démonter / mon système de fichiers / subir et de vérifier avec
s'il contient des fichiers.
Il peut y avoir des types spéciaux de systèmes de fichiers qui utilisent / réservent de l'espace sur un disque qui n'est pas visible pour la commande ls. Vous avez besoin d'outils spéciaux pour l'afficher.
En plus de cette manière systématique en utilisant la commande du, vous pouvez en utiliser d’autres. Vous pouvez donc utiliser la commande find pour rechercher des fichiers dont la taille est supérieure à une valeur fournie. Vous pouvez également rechercher des fichiers dont la taille est supérieure à celle que vous avez fournie ou qui ont été récemment créés ou qui portent un nom spécial (par exemple * .log, core, * .trc). Mais vous devriez toujours faire un df comme décrit dans 1 pour pouvoir travailler sur le bon système de fichiers
la source
/tmp
un système de fichiers séparé (par exemple, un fichier tmpfs) et que quelque chose ait créé des fichiers/tmp
avant de devenir un point de montage sur un autre système de fichiers. Désormais, ces fichiers se trouvent dans le système de fichiers racine, ombragés par un point de montage et vous ne pouvez pas y accéder sans redémarrer en mode de récupération (ce qui ne permet pas de traitement/etc/fstab
) ou, comme vous le suggérez, un montage lié.Si vous souhaitez également ne pas utiliser de commande, voici une application: Filelight
Il vous permet de visualiser rapidement ce qui utilise l’espace disque de n’importe quel dossier.
la source
ssh -X <your host>
puis exécutez votre programme à partir de la ligne de commandeEssayez
sudo apt-get autoremove
de supprimer les fichiers inutilisés si vous ne l'avez pas déjà fait.la source
J'utilise souvent celui-ci
Ensuite, si je trouve de gros dossiers, je vais y accéder et faire des recherches plus approfondies.
Si nécessaire, vous pouvez également le faire trier automatiquement avec
la source
Pas vraiment une réponse - mais un addenda.
Vous êtes vraiment à court d’espace et vous ne pouvez pas installer ncdu à partir de la réponse de @erman.
Quelques suggestions
sudo apt clean all
supprimer les paquets que vous avez déjà téléchargés. SÛRsudo rm -f /var/log/*gz
purger les fichiers journaux de plus d'une semaine ou deux - ne supprimera pas les journaux les plus récents / actuels. LE PLUS SÛRsudo lsof | grep deleted
répertorie tous les fichiers ouverts, mais filtrez ceux qui ont été supprimés du disque. FAIRLY SAFEsudo rm /tmp/*
supprimer des fichiers temporaires - si quelque chose les utilise, vous pouvez perturber le processus. PAS VRAIMENT QUE SÉCURITAIREQue `lsof on puisse retourner des lignes comme ceci:
Ne peut pas faire grand chose pour la ligne d'initialisation, mais la deuxième ligne suggère que salt-minion a un fichier ouvert qui a été supprimé et les blocs de disque seront retournés une fois que tous les descripteurs de fichier sont fermés par un redémarrage du service.
Parmi les autres suspects courants, citons syslog / rsyslog / syslog-ng, squid, apache ou tout autre processus exécuté par votre serveur qui est "lourd".
la source
Je trouve particulièrement utile la sortie d'outils comme Filelight, mais, comme dans votre cas, sur les serveurs, l'interface graphique n'est pas installée, mais la
du
commande est toujours disponible.Ce que je fais normalement c'est:
du
sortie dans un fichier (du / > du_output.txt
);DuFS
pour "monter" ladu
sortie dans un répertoire temporaire;DuFS
utilise FUSE pour créer un système de fichiers virtuel (= aucun fichier n'est créé, tout est faux) en fonction dudu
résultat;Clause de non-responsabilité: j’ai écrit
dufs
- justement parce que je dois souvent savoir ce qui optimise l’espace disque sur des machines sans tête.la source
Similaire à @TopHat, mais filtre certains fichiers s'ils ont M, G ou T dans le nom. Je ne crois pas qu'il manquera de taille dans la première colonne, mais il ne correspondra pas au nom du fichier, sauf si vous nommez les fichiers de manière créative.
Les commutateurs de ligne de commande sont expliqués ici car je ne savais pas ce que c ou a faisait.
la source