Ich versuche mich unter Ubuntu 13.10 mit udev vertraut zu machen.
Hier ist meine erste einfache 95.usbbackup.rules-Regel:
ACTION=="add", SUBSYSTEMS="usb", RUN+="/usr/local/bin/my_backup.sh"
und hier ist das Skript (das chmodded + x) my_backup.sh:
#!/bin/bash
touch /tmp/test
Wenn ich externe Laufwerke anschließe, passiert überhaupt nichts. Wie kann ich überprüfen (ein Protokoll, ein Befehl, irgendetwas), ob die Regel ausgelöst wurde?
Danke vielmals
SUBSYSTEMS=="usb"
. Dh doppelt,==
was auf Gleichheit prüft, anstatt einfach,=
was einem Schlüssel einen Wert zuweist.Antworten:
Ich bin mir ziemlich sicher, dass das funktionieren sollte. Haben Sie Ihre udev-Regeln nach dem Bearbeiten Ihrer Regeln neu geladen?
udevadm control --reload-rules && udevadm trigger
als Wurzel.quelle
KERNEL!="sdz*"
Sie es und Sie sollten alles bekommen (außer sdz [1-9])udevadm monitor
Sie können einen Befehl als root wie folgt eingeben:
Es wird angezeigt, wann eine Regel ausgelöst wurde.
quelle
udevadm monitor
zeigt nur die udev-Ereignisse an, aber nicht, wenn eine entsprechende Regel ausgelöst wurde. Sie können jedoch nach dem Ereignis suchen, das die Regel auslösen soll, wissen dann aber nicht, ob Ihre Regel funktioniert.Ich verwende Kernel 3.0.35, aber das Folgende funktioniert für mich.
Um den Pfad für das Gerät zu erhalten, können Sie Folgendes tun:
Sie erhalten mehr Informationen als Sie benötigen, interessieren sich aber für den DEVPATH. Um zu sehen, welche udev-Regeln ausgeführt werden, führen Sie Folgendes aus:
Ich glaube nicht, dass dies tatsächlich die Regeln ausführt. Die Dokumentation besagt, dass dies die Ereignisse für das gegebene Gerät "simuliert". Weitere Informationen finden Sie auf dieser Manpage: https://www.freedesktop.org/software/systemd/man/udevadm.html
quelle
Mit udev / systemd Version 241 und ähnlichem als root:
Oder um es dauerhaft zu machen, wieder als Wurzel:
PS: Die häufigste noch meiner Meinung nach falsche Antwort sieht aus wie:
udevadm -d test / Geräte / wo / ist / mein / Gerät | & weniger... aber das hat eine Reihe von Problemen. Die wichtigsten:
where/is/my/device
? Langwierig, kompliziert und fehleranfällig.Der Vergleich alter Antworten mit der jüngsten Ausgabe von udev Version 241
udevadm test
scheint weniger Informationen zu zeigen als früher.udevadm -d test
ist nur eine Simulation ! Jedes Mal warnt es:Dieses Programm dient nur zum Debuggen und führt kein durch einen RUN-Schlüssel angegebenes Programm aus. Möglicherweise werden falsche Ergebnisse angezeigt, da einige Werte möglicherweise unterschiedlich sind oder bei einem Simulationslauf nicht verfügbar sind.
udevadm test
dient zur Entwicklung einer neuen Regel und nicht zur Fehlerbehebung bei fehlerhaften, fehlenden oder überschriebenen Regeln.quelle
Ich hatte das gleiche Problem mit Raspberry Pi 3 B +. Ich habe versucht, beim Einstecken eines USB-Speichergeräts ein Skript aufzurufen. Die Regeln werden nicht im Syslog protokolliert, daher ist es sehr schwierig zu verstehen, welche Regel funktioniert hat oder welche Regel fehlgeschlagen ist.
Also habe ich folgendes gemacht:
sudo /etc/init.d/udev restart
und als ich nachgesehen habe, hat es funktioniert.
Eine Information, die nützlich sein kann oder nicht, ist, dass die Dateisysteme für udev schreibgeschützt sind, bis der Befehl in Schritt 2 ausgeführt wird.
quelle
udevadm test $(udevadm info --query=path --name=device_name)
sollte Ihnen unter Angabe der Regeln mitteilen, welche Befehle auf einem Geräte-Plug-In ausgeführt werden würdenudev
. Zum Beispiel:quelle