Ich habe ein openSUSE Leap 42.3 und versuche, einen systemd-Dienst über udev auszuführen, um meine Backups zu automatisieren. Ich verwende einen einfachen systemd-Dienst, der das Backup-Skript startet, was über die CLI problemlos funktioniert. Mit udev wird der systemd-Dienst nicht gestartet (Fehlercode 5). Es stellt sich heraus, dass das Problem nicht vom Dienst, sondern von systemd herrührt!
Insbesondere wenn ich den Dienst ohne absolute Pfade von der CLI aus starte, ist alles in Ordnung:
# systemctl start hdd-backup.service
# systemctl status hdd-backup.service
● hdd-backup.service - Backup to external HDD
Loaded: loaded (/etc/systemd/system/hdd-backup.service; static; vendor preset: disabled)
Active: active (running) since Tue 2018-04-10 21:09:34 EEST; 8s ago
Main PID: 14455 (backup.sh)
Tasks: 3 (limit: 512)
CGroup: /system.slice/hdd-backup.service
├─14455 /bin/bash /usr/local/bin/backup.sh
├─14460 /sbin/mount.ntfs /dev/sdc1 /mnt/backup -o rw
└─14463 sleep 3000
Wenn ich den Dienst jedoch mit starteabsolutPfade schlagen fehl, weil versucht wird, den Dienst .mount(!!!) zu starten:
systemctl start /etc/systemd/system/hdd-backup.service
Failed to start etc-systemd-system-hdd\x2dbackup.service.mount: Unit etc-systemd-system-hdd\x2dbackup.service.mount failed to load: No such file or directory.
Irgendeine Idee?
Antwort1
Das ist normal. Systemdunterstützt nichtStarten von Units von beliebigen Orten aus; sie müssen sich in einem der standardmäßig durchsuchten Verzeichnisse befinden. Wenn sich Ihre Unit bereits in befindet /etc/systemd/system
, ist es nie nötig, ihren Pfad anzugeben.
systemctl verfügt über verschiedene Tastenkombinationen zum Starten unterschiedlicher Unit-Typen – Verzeichnispfade werden in .mount-Units übersetzt; beispielsweise systemctl start /mnt/data
wird in übersetzt systemctl start mnt-data.mount
.