Service systemd服务启动失败:没有服务安装单元

Service systemd服务启动失败:没有服务安装单元,service,systemd,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 ~ $

我编写了一个程序(节点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单元。对的应该有这样的单位吗?最常见的建议是重新加载守护进程;这没用。或者,这可能是systemd中的一个bug,该bug已修复,但仅在比raspbian版本更新的systemd版本中(raspbian的版本为215)


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

这里的第一个问题是,您正在运行以启动服务名称
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.service
<当装置已向systemd注册且需要重新加载时,使用代码>systemctl守护程序重新加载

您可以使用命令
systemctl list units
systemctl status rfxtrx.service
检查该服务是否与systemd一起存在


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

谢谢您的回答。你的最后一段解决了这个问题。你可以把重点放在最后一段上,最重要的部分是你不能使用完整的路径。