systemd 服务启动失败:没有 service.mount 单元

Al_*_*Al_ 3 service systemd

我写了一个程序(节点 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 ~ $ 
Run Code Online (Sandbox Code Playgroud)

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

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

Bre*_*dan 5

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

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

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

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

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

您可以使用 systemd 命令systemctl list-unitssystemctl status rfxtrx.service.

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

  • 谢谢您的回答。你的最后一段解决了这个问题。 (3认同)
  • 您可以考虑强调最后一段,最重要的部分是您不能使用完整路径 (3认同)