Linux: quel processus provoque "device busy" en faisant umount? [fermé]

Linux: quel processus provoque "device busy" en faisant umount?

67
demandé sur MarkusQ 2009-03-08 22:39:37

12 réponses

regardez la commande lsof (list open files) -- elle peut vous dire quels processus maintiennent ce qui est ouvert. Il est parfois difficile, mais souvent quelque chose d'aussi simple que sudo lsof | grep (your device name here) pourrait le faire pour vous.

93
répondu MarkusQ 2017-06-09 11:48:21

au cas où... il arrive parfois que vous appeliez umount depuis le terminal, et votre répertoire courant appartient au système de fichiers monté.

41
répondu alvatar 2009-03-08 19:59:51

vous devez utiliser la commande fuser .

par exemple. fuser /dev/cdrom renverra le(s) pid (s) du procédé en utilisant /dev/cdrom .

si vous essayez de démonter, vous pouvez tuer le processus de thèses en utilisant le commutateur -k (voir man fuser ).

21
répondu Ben 2016-01-02 22:54:43

vérifier les périphériques en boucle ouverte mappés sur un fichier du système de fichiers avec "losetup-a". Ils ne se pointent pas avec le lsof ou fuser.

17
répondu Jay 2012-06-04 00:30:39

vérifier aussi /etc/exports . Si vous exportez des chemins à l'intérieur du point de montage via NFS, Cela donnera cette erreur en essayant de démonter et rien n'apparaîtra dans fuser ou lsof .

15
répondu Malvineous 2013-09-06 11:28:09
lsof +f -- /mountpoint

(comme liste des processus utilisant des fichiers sur le montage montés sur /mountpoint. Particulièrement utile pour trouver les processus qui utilisent une clé USB montée ou un CD / DVD.

8
répondu mas 2009-07-05 17:51:55

lsof et fuser sont en effet deux façons de trouver le processus qui maintient un certain fichier ouvert. Si vous voulez juste qu'umount réussisse, vous devriez étudier ses-f et-l options.

7
répondu Anonymous 2009-03-08 20:32:11

C'est exactement pourquoi le" fuser-M /mount/point " existe.

BTW, Je ne pense pas que "fuser" ou "lsof" indiquera quand une ressource est détenue par le module du noyau, bien que je n'ai généralement pas ce problème..

4
répondu 2009-03-12 21:17:30

lsof et fuser ne m'ont rien donné non plus.

Après un processus de renommage de tous les possibles répertoires .ancien et redémarrant le système à chaque fois que j'ai fait des modifications, j'ai trouvé un répertoire particulier (relatif à postfix) qui était responsable.

il s'est avéré que j'avais fait une fois un lien symbolique à partir de /var/spool/postfix to /disk2/pers/mail/postfix/varspool afin de minimiser les Écritures de disque sur un système de fichier racine basé sur SDCARD (Sheeva Plug).

avec ce lien symbolique, même après avoir arrêté les services postfix et dovecot (à la fois ps aux et netstat-tuanp n'ont rien montré de relié), Je n'ai pas pu démonter /disk2/pers.

quand j'ai enlevé le lien symbolique et mis à jour les fichiers de configuration de postfix et dovecot pour pointer directement vers le nouveau dirs on /disk2/pers/ j'ai pu arrêter les services et démonter le répertoire.

la prochaine fois, je regarderai de plus près la sortie de:

ls -lR /var | grep ^l | grep disk2

la commande ci-dessus listera de façon récursive tous les liens symboliques dans une arborescence de répertoires (ici à partir de /var) et filtrera les noms qui pointent vers un point de montage cible spécifique (ici disk2).

2
répondu captcha 2014-05-03 07:51:58

ouvrir les fichiers

Les processus

avec des fichiers ouverts sont les coupables habituels. Affichez-les:

lsof +f -- <mountpoint or device>

il y a un avantage à utiliser /dev/<device> plutôt que /mountpoint : un point de montage disparaîtra après un umount -l , ou il peut être caché par un support superposé.

fuser peut aussi être utilisé, mais à mon avis lsof a une sortie plus utile. Cependant fuser est utile quand il s'agit de tuer les processus qui causent vos drames pour que vous puissiez continuer votre vie.

Liste des fichiers <mountpoint> (voir l'avertissement ci-dessus):

fuser -vmM <mountpoint>

de manière Interactive tuer traite uniquement avec des fichiers ouverts en écriture:

fuser -vmMkiw <mountpoint>

après remounting read-only ( mount -o remount,ro <mountpoint> ), il est sûr(r) de tuer tous les processus restants:

fuser -vmMk <mountpoint>

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 causera des problèmes. Vérifier avec:

mount | grep <mountpoint>/

pour les montures loopback, vérifiez également la sortie de:

losetup -la

Anonymous inodes (Linux)

inodes anonymes peut être créé par:

  • dossiers temporaires ( open avec O_TMPFILE )
  • inotify montres
  • [eventfd]
  • [eventpoll]
  • [timerfd]

ce sont le type le plus insaisissable de Pokémon, et apparaissent dans lsof 's TYPE colonne comme a_inode (qui est non documenté dans le lsof man page ).

ils n'apparaîtront pas dans lsof +f -- /dev/<device> , donc vous aurez besoin à:

lsof | grep a_inode

Pour tuer les processus anonyme holding inodes, voir: Liste actuelle inotify montres (pathname, PID) .

1
répondu Tom Hale 2017-08-20 12:53:07

si vous ne pouvez toujours pas démonter ou démonter votre périphérique après avoir arrêté tous les services et processus avec des fichiers ouverts, alors il peut y avoir un fichier de pagination ou une partition de pagination qui maintient votre périphérique occupé. Cela n'apparaîtra pas avec fuser ou lsof . Désactiver la permutation avec:

sudo swapoff -a

vous pouvez vérifier à l'avance et afficher un résumé des partitions de swap ou des fichiers de swap avec:

swapon -s

ou:

cat /proc/swaps

comme alternative à l'utilisation de la commande sudo swapoff -a , vous pouvez également désactiver le swap en arrêtant un service ou l'unité systemd . Par exemple:

sudo systemctl stop dphys-swapfile

ou:

sudo systemctl stop var-swap.swap

dans mon cas, désactiver le swap était nécessaire, en plus d'arrêter tous les services et processus avec des fichiers ouverts à l'écriture, afin que je puisse remonter ma partition root en lecture seule pour exécuter fsck sur ma racine partition sans redémarrage. C'était nécessaire sur un Pi à la framboise courant Jessie à la framboise.

1
répondu Simon Gould 2017-09-21 16:57:19
Les systèmes de fichiers

montés sur le système de fichiers que vous essayez de démonter peuvent causer l'erreur target is busy en plus des fichiers utilisés. (Par exemple, lorsque vous mount -o bind /dev /mnt/yourmount/dev afin d'utiliser chroot .)

pour trouver les systèmes de fichiers qui sont montés sur le système de fichiers, exécutez la commande suivante:

mount | grep '/mnt/yourmount'

pour trouver quels fichiers sont utilisés les conseils déjà suggérés par d'autres ici:

lsof | grep '/mnt/yourmount'

0
répondu Slobodan Pejic 2017-01-20 14:37:27