У меня openSUSE Leap 42.3, и я пытаюсь запустить службу systemd через udev, чтобы автоматизировать резервное копирование. Я использую простой сервис systemd, который запускает скрипт резервного копирования, который отлично работает с CLI. При использовании udev служба systemd не запускается (код ошибки 5). Оказывается, проблема не в сервисе, а в systemd!

В частности, когда я запускаю службу без абсолютных путей из CLI, все в порядке:

# 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

Однако при запуске службы с абсолютными путями происходит сбой, поскольку он пытается запустить .mount(!!!) оказание услуг:

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.

Любая идея?

1 ответ1

2

Это нормально. Systemd не поддерживает стартовые юниты из произвольных мест; они должны находиться в одной из стандартных поисковых директорий. Если ваш модуль уже находится в /etc/systemd/system , вам никогда не нужно указывать его путь.


В systemctl есть различные сочетания клавиш для запуска различных типов модулей - пути к каталогам преобразуются в модули .mount; Например, systemctl start /mnt/data переводится в systemctl start mnt-data.mount .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .