我写了一个简单的服务,可以在Ubuntu 17.0上试用Systemd。当我使用选项RootDirectory
时,它无法启动我的服务。以下是一些详细信息:
[Unit]
Description= my service
[Service]
RootDirectory=/home/myname/myservice/
ExecStart=myservice_exec
[Install]
WantedBy=multi-user.target
Alias=myservice.service
二进制文件位于
/home/myname/myservice/myservice_exec
这是我从journalctl中得到的错误:
Failed at step EXEC spawning : No such file or directory
其他可能有用的详细信息:
>/lib/systemd/systemd --version
systemd 232
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN
有人知道原因吗? 预先感谢。
答案 0 :(得分:0)
在systemd v232中,ExecStart
必须始终指定要使用绝对路径运行的二进制文件。我认为该路径相对于指定的根目录,因此请尝试以下操作:
ExecStart=/myservice_exec
请注意,除非myservice_exec
是硬链接二进制文件,否则这还需要在lib
下存在一个填充程度较高的/home/myname/myservice/
目录,并且可能还包含一些其他文件。