J'ai essayé de rm -rf
créer un dossier et j'ai "périphérique ou ressource occupé".
Dans Windows, j'aurais utilisé LockHunter pour résoudre ce problème. Quel est l'équivalent Linux? (Veuillez donner comme réponse une simple méthode "de déverrouillage", et non des articles complets comme celui-ci . Bien qu'ils soient utiles, je suis actuellement intéressé par ASimpleMethodThatWorks ™)
rm -rf /
... il supprimera tous les fichiers, y compris / bin / rm.Réponses:
L'outil que vous voulez est
lsof
, ce qui signifie ouvrir les fichiers de la liste .Consultez la page de manuel, mais si vous voulez voir tous les fichiers ouverts dans un répertoire:
Cela se répètera à travers le système de fichiers sous
/path
, alors méfiez-vous-le sur les grandes arborescences.Une fois que vous savez quels processus ont des fichiers ouverts, vous pouvez quitter ces applications ou les tuer avec la
kill(1)
commande.la source
/path
. C'est une des causes des "fichiers ouverts" cachés.lsof
semble ne rien faire pour moi:lsof storage/logs/laravel.log
rien renvoyé, et ainsilsof +D storage/logs/
.umount
a répondu avecnot mounted
.mount | grep <path>
. Cela montre que tout/dev/<abc>
peut être monté sur le<path>
. Utilisezsudo umount -lf /dev/<abc>
et puis essayez de supprimer<path>
. Travaille pour moi. Merci @camhparfois, c'est le résultat de problèmes de montage, je démonte donc le système de fichiers ou le répertoire que vous essayez de supprimer:
la source
Je l'utilise
fuser
pour ce genre de chose. Il indiquera quel processus utilise un fichier ou des fichiers dans un montage.la source
fuser
aide uniquement dans le cas spécifique où vous souhaitez démonter un système de fichiers. Ici, le problème est de trouver ce qui utilise un fichier spécifique.fuser
n’aide pas ici car le problème est de trouver tous les fichiers ouverts dans une arborescence de répertoires. Vous pouvez direlsof
d’afficher tous les fichiers et les filtrer, ou bien de le rendre récurrent;fuser
n'a pas ce mode et doit être invoqué pour chaque fichier.fuser
listes de travaux Essayezfuser /var/log/*
, si des journaux sont ouverts, il indiquera lesquels et qui l'a ouvert. Si un simple caractère générique, ne fonctionnera pas,find
avec ou sansxargs
fera le travail.lsof
n’était pas sur mon chemin alors qu’ilfuser
me permettait de trouver l’ID de processus incriminé à tuer, donc + 1 + merci.Voici la solution:
ls -a
.xyz
fichiervi .xyz
et regarder dans quel est le contenu du fichierps -ef | grep username
kill -9 job_ids
- où job_ids est la valeur de la 2ème colonne du contenu correspondant à une erreur dans la 8ème colonnela source
J'ai eu ce même problème, construit une ligne commençant par @camh recommandation:
La
awk
commande saisit le PIDS. Latail
commande supprime la première entrée embêtante: "PID". J'ai utilisé-9
pour tuer, d'autres pourraient avoir des options plus sûres.la source
J'ai eu ce problème quand un test automatisé a créé un disque virtuel. Les commandes suggérées dans les autres réponses
lsof
et nefuser
servaient à rien. Après les tests, j'ai essayé de le démonter, puis de supprimer le dossier. J'étais vraiment confus depuis des siècles parce que je ne pouvais pas m'en débarrasser - je n'arrêtais pas d'obtenir "Appareil ou ressource occupé" !Par accident, j'ai découvert comment se débarrasser d'un disque mémoire. Je devais démonter le même nombre de fois que j'avais exécuté la
mount
commande, à savoirsudo umount path
Du fait qu'il a été créé à l'aide de tests automatisés, il a été monté plusieurs fois, c'est pourquoi je ne pouvais pas m'en débarrasser en le démontant simplement une fois après les tests. Ainsi, après l'avoir démonté manuellement de nombreuses fois, il est finalement redevenu un dossier normal et je pouvais le supprimer.
Espérons que cela puisse aider quelqu'un d'autre qui rencontre ce problème!
la source
Je rencontre souvent ce problème sur des serveurs dotés de systèmes de fichiers réseau NFS. Je suppose que cela a quelque chose à voir avec le système de fichiers, car les fichiers sont généralement nommés comme
.nfs000000123089abcxyz
.Ma solution typique est de renommer ou de déplacer le répertoire parent du fichier, puis de revenir plus tard dans un jour ou deux et le fichier aura été supprimé automatiquement. À ce stade, je suis libre de supprimer le répertoire.
Cela se produit généralement dans des répertoires dans lesquels je suis en train d'installer ou de compiler des bibliothèques de logiciels.
la source
Répondant à la question de Prabhat ci-dessus, j'ai eu ce problème dans macos high sierra lorsque j'ai échoué un processus encfs, le redémarrage l'a résolu, mais ceci
M'a montré le processus et le PID (colonne deux).
corrigé
la source
-15
?Si le serveur est accessible, essayez
Ou bien, démontez et montez à nouveau, essayez
umount -l
: lazy umount si vous rencontrez un problème avec umount normal.Moi aussi j'ai eu ce problème où
lsof +D path
: ne donne pas de sortieps -ef
: ne donne aucune information pertinentela source