Ich hatte das gleiche Problem. Das hat bei mir funktioniert:
Versuchen Sie, Ihr Skript in /usr/local/bin
zu kopieren und ändern Sie das Verzeichnis in Ihrem .rules
Datei.
Außerdem weiß ich nicht, was SYSFS ist, aber ich würde es vorziehen, die ATTR-Eigenschaften zu verwenden.
Die folgende Zeile ist der Inhalt meiner .rules
Datei:
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/backup.sh"
notify-send
erfordert Zugriff auf Ihren DBus-Sitzungsbus, den er aus zwei Gründen nicht haben kann:
-
Keine Informationen über die Sitzung. Wenn es von udev gestartet wird, weiß Ihr Skript nichts darüber, wo Sie eingeloggt sind oder ob Sie überhaupt eingeloggt sind. Multi-Seat mit X11 ist immer noch schwierig, aber die Benutzerumschaltung funktioniert sowohl für X11- als auch für Konsolensitzungen. Viele Leute verwenden auch SSH, VNC und NX über das Netzwerk.
(
DISPLAY=:0
würde die Hälfte der Zeit funktionieren, aber das ist immer noch raten bestenfalls.) -
Verweigert durch DBus-Richtlinie. Selbst wenn Ihr Skript Ihre X11-Sitzung irgendwie findet, kann es keine Benachrichtigungen senden, da das Skript als
root
ausgeführt wird anstelle Ihres Benutzerkontos.