Linux: le processus Qui est à l'origine de “device busy” quand vous faites la commande umount?
Linux: le processus Qui est à l'origine de "device busy" quand vous faites la commande umount?
- Vous devrez fournir quelques informations supplémentaires. Il pourrait y avoir un certain nombre de réponses différentes....
- quelles informations avez-vous besoin? quelles sont les réponses possibles?
- Le retour modifications les plus récentes. Tout d'abord, les scripts shell est aussi plus de programmation .net, SQL les requêtes ou de développement iphone. Deuxièmement, le retrait de la linux désignation rend la question ambitieux. BSD, mac OSX, etc. légèrement différente de la sémantique, Solaris, etc. encore plus.
- n'oubliez pas
NFS
! Vous avez besoin d'arrêter tous de l'exportation NFS ou des points de montage sur le lecteur que vous souhaitezumount
. NFS n'apparaissent PAS surlsof
oufuser
... il est donc très délicat!
Vous devez vous connecter pour publier un commentaire.
Regarder la lsof de commande (liste les fichiers ouverts), il peut vous dire quels sont les processus en tenant ce ouvert. Il est parfois difficile, mais souvent quelque chose d'aussi simple que de
sudo lsof | grep (your device name here)
pourrait le faire pour vous.lsof /mountpoint
au lieu delsof /mountpoint/
lsof +f /dev/device
plutôt que le point de montage. Voir le même noyau du processus d'anonymes inodes qui n'apparaissent pas encore dans cette liste.Juste au cas où... parfois, il arrive que vous appelez le démontage du terminal, et votre répertoire courant appartient au système de fichiers monté.
fuser
les prises de courant de répertoires de travail comme cela, je crois.Vous devez utiliser le unité de fusion commande.
Par exemple.
fuser /dev/cdrom
sera de retour pid(s) du processus à l'aide/dev/cdrom
.Si vous essayez de le démonter, vous pouvez tuer les thèses de processus à l'aide de la
-k
commutateur (voirman fuser
).fuser
parfois montrer des choses quilsof
n'a pas et vice-contre. vous ne pouvez pas faire juste un ou l'autre!Vérifier en boucle ouverte périphériques mappés à un fichier sur le système de fichiers avec "losetup -un". Ils ont l'habitude de se présenter avec lsof ou l'unité de fusion.
umount -l /data
effectivement travaillées - la FS disparu - mais plus tard, le démontage d'/dev/loop0
et/dev/loop1
pendu pour un certain temps. Mais maintenant, est semble tout droit. Cette réponse, c'est très important, car il aide les gens, qui ont connulsof
etfuser
pour les âges.../dev/loop0 /dev/loop1
dispositifs de boucle. La seule façon que je pouvais m'en débarrasser a été répertoriant les périphériques à l'aide de ladmsetup ls
puis trouver le suspect docker devicemapper appareil docker-253:0-4291588 de la piscine.dmsetup remove docker-253:0-4291588-pool
de s'en débarrasser proprementÉgalement vérifier
/etc/exports
. Si vous exportez des chemins dans le point de montage par NFS, il va donner à cette erreur lorsque vous tentez de démonter et rien n'apparaît dansfuser
oulsof
.(comme les listes le processus à l'aide de fichiers sur la montagne, montée sur /point de montage. Particulièrement utile pour trouver quel(s) processus sont à l'aide d'un monté sur une clé USB ou un CD/DVD.
fuser
ou standardlsof
./dev/<device>
plutôt que/mountpoint
comme/mountpoint
disparaîtra après unumount -l
.lsof et l'unité de fusion sont en effet deux façons de trouver le processus qui permet de garder une certaine ouverture de fichier.
Si vous voulez juste umount pour réussir, vous devez enquêter sur sa -f et -l options.
C'est exactement pourquoi les "unité de fusion -m /mount/point" existe.
BTW, je ne pense pas que "l'unité de fusion" ou "lsof" indique le moment où une ressource est tenue par des modules du noyau, bien que je n'ai pas l'habitude d'avoir ce problème..
lsof et l'unité de fusion n'a pas me donner quelque chose de soit.
Après un processus de renommage de tous les possibles répertoires .l'ancien et le redémarrage du système à chaque fois après que j'ai fait des modifications, j'ai trouvé un répertoire particulier (relatives à postfix) qui en était responsable.
Il s'est avéré que j'avais une fois fait un lien symbolique de /var/spool/postfix d' /disk2/pers/mail/postfix/varspool afin de minimiser les écritures sur le disque sur une carte sd à base de système de fichiers racine (Sheeva Plug).
Avec ce lien symbolique, même après l'arrêt de la postfix et dovecot (services ps aux ainsi que netstat -tuanp à ne pas montrer tout ce qui est lié) je n'ai pas pu démonter /disk2/pers.
Quand j'ai enlevé le lien et mis à jour le postfix et dovecot fichiers de configuration pour pointer directement vers les nouveaux répertoires /disk2/pers/j'ai pu réussir à arrêter les services et démonter le répertoire.
La prochaine fois je vais regarder de plus près à la sortie de:
La commande ci-dessus de manière récursive la liste de tous les liens symboliques dans une arborescence de répertoire (ici au départ de /var) et de filtrer ces noms qui pointent vers une cible spécifique point de montage (ici 2).
find /var -lname *disk2*
Ouvrir des fichiers
Processus avec les fichiers ouverts sont les coupables habituels. Afficher:
Il y a un avantage à utiliser des
/dev/<device>
plutôt que/mountpoint
: d'un point disparaît après unumount -l
, ou il peut être masqué par un superposés mont.fuser
peut également être utilisé, mais à mon avislsof
est plus utile de sortie. Cependantfuser
est utile quand il s'agit de tuer le processus à l'origine de votre drames de sorte que vous pouvez obtenir avec votre vie.Liste des fichiers sur
<mountpoint>
(voir l'avertissement ci-dessus):De manière interactive tuer traite uniquement avec des fichiers ouverts en écriture:
Après le remonter en lecture seule (
mount -o remount,ro <mountpoint>
), c'est sûr(r) pour tuer tous les processus restants:Points de montage
Le coupable peut être le noyau lui-même. Un autre système de fichiers monté sur le système de fichiers que vous essayez de
umount
sera la cause de la douleur. Vérifiez auprès de:Pour le bouclage des montures, vérifiez également la sortie de:
Anonyme inodes (Linux)
Anonyme inodes peut être créé par:
open
avecO_TMPFILE
)Ce sont les plus insaisissables type de pokemon, et apparaissent dans
lsof
'sTYPE
colonne commea_inode
(qui est sans papiers dans l'lsof
de la page de manuel).Ils n'apparaîtront pas dans
lsof +f -- /dev/<device>
, de sorte que vous aurez besoin de:Pour tuer les processus anonyme holding inodes, voir: La liste actuelle inotify montres (pathname, PID).
Si vous ne pouvez toujours pas de démonter ou remonter votre appareil après l'arrêt de tous les services et des processus avec les fichiers ouverts, puis il y a peut être un fichier de swap ou de la partition de swap en gardant votre périphérique occupé. Ce ne sera pas avec
fuser
oulsof
. Désactiver la permutation avec:Vous pouvez vérifier à l'avance et afficher un résumé de toutes les partitions de swap ou les fichiers de swap avec:
ou:
Comme une alternative à l'aide de la commande
sudo swapoff -a
, vous pourriez également être en mesure de désactiver le swap par l'arrêt d'un service ou systemd unité. Par exemple:ou:
Dans mon cas, la désactivation de swap a été nécessaire, en plus de l'arrêt de tous les services et les processus avec des fichiers ouverts en écriture, alors que j'ai pu remonter ma partition racine en lecture seule afin d'exécuter
fsck
sur ma partition root sans avoir à redémarrer. Cela était nécessaire sur un Raspberry Pi exécution de Raspbian Jessie.Systèmes de fichiers montés sur le système de fichiers que vous tentez de démonter peuvent causer la
target is busy
erreur en plus de tous les fichiers qui sont en cours d'utilisation. (Par exemple, lorsque vousmount -o bind /dev /mnt/yourmount/dev
afin d'utiliserchroot
là.)De trouver quels systèmes de fichiers sont montés sur le système de fichiers, exécutez la commande suivante:
mount | grep '/mnt/yourmount'
De trouver les fichiers qui sont en cours d'utilisation les conseils déjà suggéré par d'autres ici:
lsof | grep '/mnt/yourmount'