c'è un modo per fornire script post-mount e pre-umount in Linux?
Sto provando a fare alcuni script sui supporti di archiviazione quando montati e prima di smontarli (ad es. Per la sincronizzazione).
Qualsiasi aiuto apprezzato.
c'è un modo per fornire script post-mount e pre-umount in Linux?
Sto provando a fare alcuni script sui supporti di archiviazione quando montati e prima di smontarli (ad es. Per la sincronizzazione).
Qualsiasi aiuto apprezzato.
Risposte:
Se stai cercando di farlo per le persone che invocano il comando /sbin/mount
e /sbin/umount
, tutto ciò che dovresti fare è creare un programma wrapper per entrambi e programmare ciò che vuoi in questi programmi wrapper.
Un programma wrapper viene sostituito /sbin/mount
con il programma wrapper che chiama il reale /sbin/mount
(rinominato in qualcosa di simile /sbin/mount-real
o /sbin/umount-real
). Per impedire a chiunque di chiamare il programma reale, utilizzare le autorizzazioni di gruppo per limitarlo e impostare il bit SGID sui programmi wrapper.
Se stai cercando di correggere la mount(2)
chiamata in libreria, questo è uno sforzo e probabilmente difficile e probabilmente non consigliabile in quanto ciò potrebbe causare problemi per l'elaborazione dei sistemi interni, specialmente durante l'avvio e l'arresto.
Anche con un programma wrapper dovresti probabilmente testarlo a fondo per evitare interferenze del sistema e apportare le opportune modifiche.
Probabilmente puoi usare l' hook del kernel inotify , anche se un evento pre-smontaggio può essere davvero complicato da catturare poiché non sono sicuro che ci sia un evento inotify inviato prima che la directory venga smontata.
/media
o /mnt
), ma non se un filesystem è stato montato su quella directory.
La soluzione più semplice che probabilmente funzionerà per sempre è il polling del /etc/mtab
o /proc/mounts
. Una volta apportata una modifica a quel file, significa che qualcosa è stato montato o smontato. Quindi devi controllare lì per il dispositivo che desideri.
Udev non è la soluzione migliore poiché ti dice solo se un dispositivo è collegato. Non dice se il dispositivo è stato effettivamente montato o meno. A volte potrebbe funzionare, ma è una soluzione confusa che a un certo punto si romperà e ti strapperai i capelli.
potresti scrivere una regola udev per farlo. Ho qualcosa usate come questo per il backup automaticamente roba per un drive USB. Cose divertenti.