czy istnieje sposób na dostarczenie skryptów po zamontowaniu i wstępnie zamontowanych w Linuksie?
Próbuję zrobić kilka skryptów na nośniku pamięci, gdy są zamontowane i przed odmontowaniem (np. W celu synchronizacji).
Każda pomoc doceniona.
czy istnieje sposób na dostarczenie skryptów po zamontowaniu i wstępnie zamontowanych w Linuksie?
Próbuję zrobić kilka skryptów na nośniku pamięci, gdy są zamontowane i przed odmontowaniem (np. W celu synchronizacji).
Każda pomoc doceniona.
Odpowiedzi:
Jeśli próbujesz to zrobić dla osób wywołujących polecenie /sbin/mount
i /sbin/umount
, wszystko, co musisz zrobić, to utworzyć program otoki dla obu programów i zaprogramować co chcesz w tych programach otoki.
Program owijania zastępowany /sbin/mount
programem owijającym, który wywołuje wartość rzeczywistą /sbin/mount
(przemianowaną na coś takiego jak /sbin/mount-real
lub /sbin/umount-real
). Aby uniemożliwić komukolwiek wywołanie prawdziwego programu, użyj uprawnień grupy, aby go ograniczyć i ustawić bit SGID w programach opakowania.
Jeśli chcesz naprawić mount(2)
wywołanie biblioteki, jest to trudny i prawdopodobnie trudny i prawdopodobnie nie zalecany, ponieważ może to powodować problemy z przetwarzaniem systemów wewnętrznych, szczególnie podczas uruchamiania i zamykania.
Nawet w przypadku programu do pakowania prawdopodobnie trzeba by go dokładnie przetestować, aby uniknąć zakłóceń w systemie i wprowadzić odpowiednie zmiany.
Prawdopodobnie możesz użyć haka jądra inotify , chociaż zdarzenie poprzedzające odmontowanie może być bardzo trudne do złapania, ponieważ nie jestem pewien, czy zdarzenie inotify zostało wysłane przed zmontowaniem katalogu.
/media
lub /mnt
), ale nie, jeśli system plików został zamontowany w tym katalogu.
Najprostsze rozwiązanie, które prawdopodobnie będzie działać zawsze jest odpytywania /etc/mtab
lub /proc/mounts
. Po wprowadzeniu zmiany do tego pliku oznacza to, że coś zostało zamontowane lub odmontowane. Następnie musisz sprawdzić tam, czy chcesz mieć urządzenie.
Udev nie jest najlepszym rozwiązaniem, ponieważ informuje tylko, czy urządzenie jest podłączone. Nie mówi, czy urządzenie faktycznie zostało zamontowane, czy nie. To może czasem zadziałać, ale jest to hacking rozwiązanie, które w pewnym momencie się zepsuje i będziesz wyciągać włosy.
możesz napisać regułę udev, aby to zrobić. Użyłem coś jak to do automatycznego tworzenia kopii zapasowych rzeczy na dysku USB. Zabawne rzeczy.