systemd 启动 /etc/systemd/system/custom.service 无法启动

systemd 启动 /etc/systemd/system/custom.service 无法启动

我有一台 openSUSE Leap 42.3,我尝试通过 udev 运行 systemd 服务来自动执行备份。我使用一个简单的 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

这很正常。Systemd不支持从任意位置启动单元;它们必须位于标准搜索目录之一中。如果您的单元已位于 中/etc/systemd/system,则无需指定其路径。


systemctl 有各种启动不同单元类型的快捷方式——目录路径被转换为 .mount 单元;例如systemctl start /mnt/data被转换为systemctl start mnt-data.mount

相关内容