【问题标题】:systemd service start fails: no service.mount unitsystemd 服务启动失败:没有 service.mount 单元
【发布时间】:2018-05-31 02:49:35
【问题描述】:

我写了一个程序(节点 js,在 Raspberry Pi 上),我可以手动启动,但不能作为 systemd 服务:

pi@blueberry ~ $ systemd --version
systemd 215
+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR
pi@blueberry ~ $ sudo systemctl daemon-reload
pi@blueberry ~ $ sudo systemctl start /etc/systemd/system/rfxtrx.service
Failed to start etc-systemd-system-rfxtrx.service.mount: Unit etc-systemd-system-rfxtrx.service.mount failed to load: No such file or directory.
pi@blueberry ~ $ 

错误信息抱怨没有 rfxtrx.service.mount 单元。正确的。应该有这样的单位吗?最常见的建议是 daemon-reload;这没有帮助。或者根据https://github.com/systemd/systemd/issues/5375,这可能是 systemd 中的一个错误,该错误已修复,但仅在比 raspbian 中的版本更高的 systemd 版本中得到修复(raspbian 的版本为 215)。

除了尝试更新到 raspbian 维护者不支持的版本之外,还有其他解决方案吗?

【问题讨论】:

    标签: service systemd


    【解决方案1】:

    这里的第一个问题是您正在运行以启动服务名称 rfxtrx.service 但是 systemd 期待 etc-systemd-system-rfxtrx.service.mount

    如果您尝试使用 systemd 挂载配置,那么您的文件名应遵循以下规则:

    挂载单元必须以其挂载点目录命名 控制。示例:挂载点 /home/lennart 必须配置在 一个单元文件 home-lennart.mount。

    因此,如果您想在 /dir/to/rfxtrx 创建挂载点,则 systemd 挂载文件需要命名为 dir-to-rfxtrx.mount,建议将其放在 /usr/lib/systemd/system//etc/systemd/system/ 中,后一个目录优先。

    如果您只想拥有一个服务文件,请启用单元systemctl enable rfxtrx.servicesystemctl daemon-reload 用于当单元已经注册到 systemd 并且需要重新加载时使用。

    您可以使用命令systemctl list-unitssystemctl status rfxtrx.service 来检查该服务是否存在于systemd。

    您遇到的错误是您正在使用sudo systemctl start /etc/systemd/system/rfxtrx.service 而不是sudo systemctl start rfxtrx.service

    【讨论】:

    • 感谢您的回答。你的最后一段解决了这个问题。
    • 你可以考虑把重点放在最后一段,最重要的是你不能使用完整路径
    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 2019-02-12
    • 2020-06-28
    • 2020-03-25
    相关资源
    最近更新 更多