Accrochez-vous à l'événement Linux Mount / Umount

9

existe-t-il un moyen de fournir des scripts post-montage et pré-démontage sous Linux?
J'essaie de faire des scripts sur des supports de stockage lorsqu'ils sont montés et avant le démontage (par exemple, pour la synchronisation).

Toute aide appréciée.

Jörg Haubrichs
la source
Comment le système de fichiers est-il monté? Les choses ne sont pas montées automatiquement, vous avez probablement un programme / outil qui effectue le montage pour vous. Vous devez déterminer ce que c'est et le remplacer ou le réparer.
Zoredache
Dans mon cas, j'utilise normalement le sous-système KDE (probablement Dolphin, je ne sais pas quel composant est responsable de la commande de montage réelle)
Jörg Haubrichs
1
j'ai écrit sur la gestion des montages automatiques avec uDev ou avec HALevt dans les réponses à une autre question. ce seraient des remplacements pour le sous-système KDE ou GVFS, mais la procédure pourrait vous donner quelques idées sur où chercher. il semble que vous souhaitiez puiser dans les supports Dbus (bureau / espace utilisateur plutôt qu'au niveau du noyau).
Quack Quichotte

Réponses:

2

Si vous essayez de le faire pour les personnes appelant la commande /sbin/mountet /sbin/umount, tout ce que vous avez à faire est de créer un programme wrapper pour les deux et de programmer ce que vous voulez dans ces programmes wrapper.

Un programme wrapper étant remplacé /sbin/mountpar le programme wrapper qui appelle le réel /sbin/mount(renommé quelque chose comme /sbin/mount-realou /sbin/umount-real). Pour empêcher quiconque d'appeler le programme réel, utilisez des autorisations de groupe pour le restreindre et définissez le bit SGID sur les programmes wrapper.

Si vous cherchez à corriger l' mount(2)appel de bibliothèque, c'est un effort et probablement difficile et probablement déconseillé car cela pourrait causer des problèmes de traitement des systèmes internes, en particulier au démarrage et à l'arrêt.

Même avec un programme wrapper, vous devrez probablement le tester à fond pour éviter les interférences du système et faire les ajustements appropriés.

mdpc
la source
Très mauvais conseil et horreur de la maintenance si plusieurs programmes le faisaient. Ne commencez pas de cette façon.
Lothar
0

Vous pouvez probablement utiliser le hook du noyau inotify , bien qu'un événement de pré-démontage puisse être vraiment difficile à attraper car je ne suis pas sûr s'il y a un événement inotify envoyé avant le démontage du répertoire.

d34dh0r53
la source
2
inotify vous indiquera qu'un répertoire a été créé (par exemple sous /mediaou /mnt), mais pas si un système de fichiers a été monté sur ce répertoire.
Craig McQueen
0

La solution la plus simple qui fonctionnera probablement pour toujours est d'interroger le /etc/mtabou /proc/mounts. Une fois que ce fichier a été modifié, cela signifie que quelque chose a été monté ou démonté. Ensuite, vous devez vérifier là pour l'appareil que vous voulez.

Udev n'est pas la meilleure solution car il vous indique simplement si un appareil est connecté. Il ne dit pas si l'appareil est réellement monté ou non. Cela peut parfois fonctionner, mais c'est une solution hacky qui à un moment donné se cassera et vous vous arracherez les cheveux.

Pithikos
la source
"hacky" est généralement assez bon pour la plupart des situations. Le monde réel est géré par des solutions "hacky". Si vous ne le savez pas, vous n'avez aucune expérience du monde réel en utilisant des systèmes informatiques. Veuillez conserver vos opinions pour vous et respectez les faits. Merci.
natxo asenjo
1
@natxoasenjo c'est pourquoi il y a de bons développeurs et de mauvais développeurs.
Pithikos
veuillez revenir lorsque vous aurez une expérience du monde réel. Ce que vous proposez est d'écrire un script / programme pour interroger les fichiers et vous pensez que c'est une meilleure idée que d'utiliser une API bien testée comme udev. Qui est le mauvais développeur? ;-)
natxo asenjo
et au fait, écrire des règles udev ne fait pas de vous un développeur, tout au plus un administrateur système de votre ordinateur.
natxo asenjo
1
@natxoasenjo bien si vous ne voyez pas que les programmes "du monde réel" se cassent tout le temps en raison de solutions piratées, alors vous êtes aveugle ou vous n'avez pas "une expérience du monde réel". Udev fonctionne bien mais n'a rien à voir avec le montage et le démontage. Et s'il vous plaît, arrêtez de transformer cela en un fil de discussion sur qui est programmeur. N'aide personne.
Pithikos
0

vous pouvez écrire une règle udev pour ce faire. J'ai utilisé quelque chose comme ça pour sauvegarder automatiquement des choses sur un lecteur USB. Truc amusant.

natxo asenjo
la source
1
udev ne semble cependant pas avoir d'événement pour le montage / démontage. Il se déclenche juste lorsque vous connectez / déconnectez un appareil. Et votre lien ne fonctionne pas ..
Pithikos
qui a été répondu il y a 4 ans. Je ne suis pas responsable de ce site. Mais vous pouvez jeter un oeil à archive.org ..., oui, il est toujours là, le trouver restera un exercice pour le lecteur. Quant à votre commentaire sur udev, udev vous permet d'écrire des règles et d'exécuter des actions lorsque celles-ci correspondent. C'est tout ce dont vous avez besoin.
natxo asenjo
2
le but est d'aider d'autres personnes à trébucher sur la question, il ne s'agit pas de points ou d'autres boosts d'ego. Maintenant, même si un utilisateur passe par tous ces problèmes, la solution est obsolète. Vous perdez donc le temps des gens sans aucun avantage (sauf les 1-2 votes positifs que vous avez).
Pithikos
2
@natxoasenjo, les autres utilisateurs ont raison, et c'est exactement pourquoi nous encourageons les réponses à citer ou à paraphraser suffisamment d'informations à partir des ressources liées pour que la réponse reste autonome si les liens meurent. Une bonne réponse ici aurait en fait montré un exemple de la façon de créer une règle udev pour exécuter un script avant / après le montage / démontage.
nhinkle
1
@natxoasenjo J'ai visité le message parce que votre commentaire a été signalé par un utilisateur indépendant comme étant impoli ou impoli. Stack Exchange a certaines attentes en matière de réponses, dont l'une est qu'elles doivent contenir plus qu'un lien vers une source externe. Votre réponse ne répond pas à cette exigence. Vous avez une opinion sur ce qui est "parfaitement bien" qui ne correspond pas aux attentes de Stack Exchange pour une bonne réponse. Veuillez prendre le temps de lire Comment répondre .
nhinkle