ubuntuusers.de

udev-Regel mit udisksctl

Status: Ungelöst | Ubuntu-Version: Server 24.04 (Noble Numbat)
Antworten |

homeserver_wacken

Anmeldungsdatum:
1. März 2025

Beiträge: 25

Hi,

ich habe folgende udev-Regel erstellt:

1
ACTION=="add", SUBSYSTEM=="usb", ENV{ID_SERIAL_SHORT}=="00000000XXX", RUN="/usr/bin/sudo -u root /usr/local/bin/backup_script.sh"

Abgelegt ist die Regel hier:

1
/etc/udev/rules.d/99-USB_14TB_backup_drive.rules

Im Skript backup_script.sh, welches ausführbar ist habe ich folgenden Befehl

1
udisksctl power-off -b /dev/sdd >> $LOG_FILE 2>&1

der nicht sauber ausgeführt, wenn dieser automatisiert mit udev ausgeführt wird. Die anderen Befehle machen was sie sollen. Wenn ich das Script normal in der Konsole mit:

1
/usr/local/bin/backup_script.sh

ausführe ist alles OK.

Folgende Fehlermeldung bekomme ich bei der udev Ausführung:

1
Error looking up object for device /dev/sdd

Woran kann es liegen das der Befehl nur bei udev einen Fehler schmeißt?

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9564

Wohnort: Münster

Vielleicht gibt es die Datei gar nicht. Zeige:

test -e /dev/sdd || echo $_ gibt es nicht 

Jedenfalls solltest Du nicht erwarten, dass temporäre Bezeichner wie /dev/sdd zur Laufzeit von udev existieren bzw. stets dasselbe bedeuten. Verwende permanente Bezeichner.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11237

Wohnort: München

Könnte es sein, dass das Gerät nicht immer unter /dev/sdd verfügbar ist? Eventuell ist es besser über eine ID oder ein anderes eindeutiges Merkmal (mal in /dev/disc/by-* stöbern) zu gehen.

Ansonsten sehen ich da das Problem, dass die von Udev aufgerufenen Skripte ein Zeitlimit haben, nachdem sie wieder abgebrochen werden - d.h. es könnte passieren, dass dein Backup-Skript deswegen mittendrin abbricht. Der saubere Weg das zu lösen wäre eine Systemd-Unit zu erstellen, die von der udev-Regel getriggert wird: Udev

homeserver_wacken

(Themenstarter)

Anmeldungsdatum:
1. März 2025

Beiträge: 25

Die HDD ist definitive unter /dev/sdd verfügbar.

1
test -e /dev/sdd || echo $_ gibt es nicht 

Liefert keine Ausgabe.

Danke für den Tipp mit dem Zeitlimit, da bin ich an einer anderen Stelle reingelaufen ohne die Ursache gefunden zu haben. Das scheint für den udiscs Befehl aber nicht die Ursache zu sein. Das Skript ist soweit auskommentiert, dass quasi nur noch das Ausschalten aktiv ist. Auch hätte ich dann erwartet, dass das Skript einfach stoppt und gar nicht den Befehl ausführt, und dann schon gar nicht mit meiner Fehlermeldung beendet.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17595

Wohnort: Berlin

Da udisksctl in /usr/bin liegt dürfte das eigentlich keine Fehlerquelle sein.

Wenn ich das Script normal in der Konsole mit:

1
/usr/local/bin/backup_script.sh

ausführe ist alles OK.

Wenn dann alles ok ist, wieso rufst Du es dann bei den udev-Rules mit sudo auf?

Hast Du mal journalctl -b aufgerufen, ob da was protokolliert ist?

Antworten |