Mit Udev Regel sh ausführen?

2 Antworten

ich bin mir nicht zu 100% sicher, aber könnte vielleicht daran liegen, dass die udev-Regel das Skript "usb.sh" ausführt, bevor das USB-Gerät vollständig gemountet ist. Infolgedessen ist der Pfad "/media/$1" noch nicht verfügbar. Änder die udev-Regel mal so, dass das skript erst ausgeführt wird, nachdem das USB-Gerät vollständig gemountet ist. Dazu kannst du add durch change ersetzen.

Also ACTION=="change", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb.sh".

Man kann natürlich auch add beibehalten und das skript usb.sh so ändern, dass es den pfad zum USB-Gerät selbst ermittelt, aber ich denke dass ist erstmal zu komplex für dei Vorhaben. Probier es erst mal so aus...

kurze logik erklärung;

add wird ausgeführt wenn ein neues gerät erkannt wird

change wenn sich die Eigenschaft eines bereits bekannten Gerät ändert. Vielleicht klappt es ja so, kann es aber nicht garantieren

Kelec  11.01.2024, 16:07

Ich weiß nicht ob das mit change soweit besser geht. Besser wäre in dem Fall gar kein Automount zu verwenden sondern den mount nach dem einstecken selbst zu machen so wie hier:

https://andreafortuna.org/2019/06/26/automount-usb-devices-on-linux-using-udev-and-systemd/

Oder einfach zu warten bis der stick gemountet wurde.

Allerdings sollte die udev in beiden Fällen einen Prozess spawnen welcher das macht, damit die Udev abgeschlossen werden kann und das kopieren asynchron läuft.

0
JulianOnFire  11.01.2024, 16:22
@Kelec

ja es sollte beides gehen, wobei beides seine hacken, bzw. Vor- und Nachteile hat.

Ich meinte damit dass die Funktion add ausgeführt wird wenn du einen neuen USB Stick ansteckst. In diesem Fall ist das Gerät noch nicht vollständig gemountet und der Pfad "/media/$1" ist noch nicht verfügbar.

Die Aktion "change" wird hingegen ausgeführt, wenn du einen bereits angeschlossenen USB-Stick an- oder abstöpselst. In diesem Fall ist das Gerät bereits vollständig gemountet und der Pfad "/media/$1" ist verfügbar.

Bei Verwendung von systemd-Diensten bist du halt Rubuster und hast mehr zuverlässigkeit vor Datenverlust. Bei speraten Skripts bist du halt jenachdem wie du dein skript aufbaust definitiv flexibler und effizienter. Man muss mal alles durchtesten und schauen was geht

0
Chickenpie437 
Fragesteller
 12.01.2024, 07:48
@Kelec

Also mit "change" passiert tatsächlich gar nichts mehr :/

0
Chickenpie437 
Fragesteller
 11.01.2024, 16:13

Werde es morgen gleich mal ausprobieren 👍

Habe jetzt endlich Feierabend aber an sowas in der Art habe ich auch schon gedacht, weil dieses Fenster mit (Ordner anzeigen?) erst später kommt

0

Die Udevregel führt das Skript beim einstecken des USB Sticks aus du musst aber warten bis der Stick gemountet ist bzw den Stick selbst mounten.

Dass du auf den Ordner nicht zugreifen kannst liegt daran, dass das ganze mit Root Rechten erstellt wird.