Parfois, je voudrais démonter un périphérique USB avec umount /run/media/theDrive
, mais je reçois une drive is busy
erreur.
Comment savoir quels processus ou programmes accèdent à l'appareil?
process
open-files
unmounting
Stefan
la source
la source
Réponses:
Utilisez
lsof | grep /media/whatever
pour savoir ce qui utilise la monture.En outre, envisagez
umount -l
(laumount umount) pour empêcher de nouveaux processus d’utiliser le lecteur pendant le nettoyage.la source
fuser -mv /path/to/mountpoint
pourrait être une alternative plus lisible pour découvrir des processus utilisant un point de repère.lsof | grep
fonctionne mieux pour moi.fuser -mv
semble simplement vider plus de 80% des processus sans rapport. J'utilise des répertoires liés au montage.umount -l
est dangereux .mount -o bind
à la place, un000
répertoire vide en mode et nettoyez vialsof +f -- /dev/device
.La plupart du temps, la meilleure commande à utiliser est lsof ( « l i s t o pen f Iles »).
où
/media/usb0
est le point de montage du lecteur USB ou d'un autre système de fichiers à démonter.+f --
indique à lsof de traiter l'argument suivant comme un point de montage; il gère généralement, mais pas toujours, tout seul, de sorte que celalsof /media/usb0
fonctionne également. Cela permet de trouver des fichiers ouverts (même non liés), des fichiers mappés en mémoire, des répertoires en cours et des utilisations plus obscures. Vous devez exécuter la commande en tant que root pour obtenir des informations sur les processus des autres utilisateurs (et je pense qu'il existe des unités quilsof
doivent être exécutées en tant que root).Il y a des utilisations que lsof ne trouvera pas; ceux-ci sont rares sur les supports amovibles. Ils incluent:
/foo
s'il/foo/bar
s'agit d'un point de montage./foo
s'il/foo/bar
s'agit d'un périphérique bloc monté ou d'un fichier normal monté en boucle, ou s'il est la source d'un montage de liaison Linux.Une autre commande pouvant servir dans un pincement est fuser, qui ne répertorie que les PID des processus avec des fichiers ouverts sur le périphérique:
la source
Vous pouvez utiliser
lsof
comme Peter l'a dit, ou si vous êtes sûr de vouloir simplement tuer toutes ces choses et les démonter, vous pouvez probablement faire quelque chose comme:la source
-M
sécurité.-M
doit être appliquée.fuser
:-M, --ismountpoint Request will be fulfilled only if NAME specifies a mountpoint. This is an invaluable seatbelt which prevents you from killing the machine if NAME happens to not be a filesystem.
Ouvrir des fichiers
Les processus avec des fichiers ouverts sont les coupables habituels. Les afficher:
Il y a un avantage à utiliser
/dev/<device>
plutôt que/mountpoint
: un point de montage disparaît après unumount -l
ou peut être caché par un montage superposé.fuser
peut également être utilisé, mais à mon avislsof
a une sortie plus utile. Cependant, ilfuser
est utile de tuer les processus qui causent vos drames afin que vous puissiez continuer votre vie.Liste des fichiers sur
<mountpoint>
(voir l'avertissement ci-dessus):Ne supprimez de manière interactive que les processus dont les fichiers sont ouverts à l'écriture:
Après avoir remonté read-only (
mount -o remount,ro <mountpoint>
), il est prudent de 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 d'essayer
umount
causera des problèmes. Vérifier avec:Pour les montages en boucle ( merci Stephen Kitt ), vérifiez également la sortie de:
Inodes anonymes (Linux)
Les inodes anonymes peuvent être créés par:
open
avecO_TMPFILE
)Ce type de pokemon est le plus insaisissable et apparaît dans
lsof
laTYPE
colonne 's sous la formea_inode
(non documenté dans lalsof
page de manuel ).Ils n'apparaîtront pas dans
lsof +f -- /dev/<device>
, vous devrez donc:Pour plus d'informations sur les processus contenant des inodes anonymes, voir: Liste des surveillances inotify actuelles (nom du chemin, PID) .
inotify
montres (Linux)Ce commentaire explique pourquoi
inotify
ne devrait pas empêcher un démontage, mais cette note décrit les situations dans lesquelles il va :la source
lsof
.Mountpoints
section.Si vous utilisez GNOME, le démontage via Nautilus affichera un message indiquant quel processus utilise toujours le lecteur et le fichier utilisé.
la source
Pour (au moins) OpenBSD:
Par exemple (utiliser
doas
pour exécuter enfstat
tant que root, sinon nous ne verrions que nos propres processus):Dans ce cas, je ne pourrais pas démonter
/usr/ports
avant que l'utilisateur_pbuild
n'ait fini d'exécuter ces deuxmake
processus.la source
C'est un piège courant: vous appelez un utilisateur différent (root ou tout autre utilisateur), accédez au répertoire d'un périphérique monté, puis vous vous déconnectez en tant qu'utilisateur. Lorsque vous oubliez que vous êtes parti dans ce répertoire, vous pouvez essayer de trouver jusqu'à ce que vous soyez aveugle.
lsof
ne montre au shell que le répertoire en cours utilise ce périphérique. Vous voudrez peut-être utiliser à nouveau cet utilisateur pour modifier votre répertoire.la source