Collegalo all'evento mount / umount di linux


9

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.


Come viene montato il filesystem? Le cose non vengono montate automaticamente presumibilmente hai qualche programma / strumento che sta eseguendo il montaggio per te. Devi determinare di cosa si tratta e sostituirlo o ripararlo.
Zoredache,

Nel mio caso di solito uso il sottosistema KDE (presumibilmente Dolphin, non so quale componente sia responsabile dell'attuale comando mount)
Jörg Haubrichs

1
ho scritto sulla gestione degli automount con uDev o con HALevt in risposta a un'altra domanda. quelli sarebbero rimpiazzi per il sottosistema KDE o GVFS, ma la procedura potrebbe darti alcune idee su dove cercare. sembra che tu voglia attingere ai montaggi Dbus (desktop / spazio utente anziché a livello di kernel).
Quack Quixote

Risposte:


2

Se stai cercando di farlo per le persone che invocano il comando /sbin/mounte /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/mountcon il programma wrapper che chiama il reale /sbin/mount(rinominato in qualcosa di simile /sbin/mount-realo /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.


Pessimo consiglio e orrore della manutenzione se più programmi lo facessero. Non iniziare in questo modo.
Lothar,

0

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.


2
inotify ti dirà che è stata creata una directory (es. sotto /mediao /mnt), ma non se un filesystem è stato montato su quella directory.
Craig McQueen,

0

La soluzione più semplice che probabilmente funzionerà per sempre è il polling del /etc/mtabo /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.


"hacky" di solito è abbastanza buono per la maggior parte delle situazioni. Il mondo reale è gestito da soluzioni "hacky". Se non lo sai, non hai esperienza nel mondo reale nell'uso dei sistemi informatici. Ti preghiamo di salvare le tue opinioni e attenersi ai fatti. Grazie.
natxo asenjo,

1
@natxoasenjo ecco perché ci sono buoni sviluppatori e cattivi sviluppatori.
Pithikos,

per favore torna quando hai qualche esperienza nel mondo reale. Quello che proponi è di scrivere alcuni script / programmi nei file di polling e pensi che sia un'idea migliore che usare un API ben testato come udev. Chi è il cattivo sviluppatore? ;-)
natxo asenjo

e, a proposito, scrivere regole udev non ti rende uno sviluppatore, al massimo un amministratore di sistema del tuo computer.
natxo asenjo,

1
@natxoasenjo bene se non vedi che i programmi del "mondo reale" si interrompono continuamente a causa di soluzioni hacker, allora sei cieco o non hai "esperienza nel mondo reale". Udev funziona bene ma non ha nulla a che fare con il montaggio e lo smontaggio. E per favore, smettila di trasformarlo in un thread del forum su chi è un programmatore. Non aiuta nessuno.
Pithikos,

0

potresti scrivere una regola udev per farlo. Ho qualcosa usate come questo per il backup automaticamente roba per un drive USB. Cose divertenti.


1
Udev sembra non avere un evento per mount / smontaggio. Si attiva solo quando si collega / disconnette un dispositivo. E il tuo link non funziona ..
Pithikos,

a cui è stata data risposta 4 anni fa. Non sono responsabile per quel sito. Ma potresti dare un'occhiata a archive.org ... sì, è ancora lì, scoprendo che sarà lasciato come esercizio per il lettore. Per quanto riguarda il tuo commento su udev, udev ti consente di scrivere regole ed eseguire azioni quando queste sono abbinate. È tutto ciò di cui hai bisogno.
Natxo Asenjo,

2
il punto è aiutare altre persone a inciampare sulla questione, non si tratta di punti o di altri stimoli dell'ego. Ora, anche se un utente attraversa tutti questi problemi, la soluzione è obsoleta. Quindi stai sprecando il tempo delle persone senza alcun beneficio (tranne i 1-2 voti in più che hai).
Pithikos,

2
@natxoasenjo gli altri utenti hanno ragione, ed è proprio per questo che incoraggiamo le risposte a citare o parafrasare informazioni sufficienti da risorse collegate affinché la risposta rimanga isolata se i collegamenti muoiono. Una buona risposta qui avrebbe effettivamente mostrato un esempio di come creare una regola udev per eseguire uno script prima / dopo il montaggio / smontaggio.
Pensa al

1
@natxoasenjo Ho visitato il post perché il tuo commento è stato segnalato da un utente estraneo come scortese o scortese. Stack Exchange ha alcune aspettative per le risposte, una delle quali è che devono contenere più di un collegamento a una fonte esterna. La tua risposta non soddisfa questo requisito. Hai un'opinione di ciò che è "perfettamente bene" che non corrisponde alle aspettative di Stack Exchange per una buona risposta. Ti preghiamo di dedicare del tempo a leggere Come rispondere .
ripensaci il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.