单元服务未正确加载:Exec 格式错误。在ubuntu18.04上创建.net服务

sum*_*tty 3 ubuntu service systemd systemctl ubuntu-18.04

我正在尝试创建一个由 .net 应用程序在 ubuntu 18.04 上运行的服务。

cd /lib/systemd/system/YellowPages.service

[Unit]
Description = Yellow pages .NET service

[Service]
Type=forking
WorkingDirectory=/home/yp_app
ExecStart=dotnet /home/yp_app/YellowPages.dll

[Install]
WantedBy=multi-user.target
~
Run Code Online (Sandbox Code Playgroud)

我的申请位于/home/yp_app。

当我运行:systemd start YellowPages.service 我得到多余的参数。

所以我尝试使用: systemctl start YellowPages.service 我得到

 Failed to start YellowPages.service: Unit YellowPages.service is not loaded properly: Exec format error.
See system logs and 'systemctl status YellowPages.service' for details.
Run Code Online (Sandbox Code Playgroud)

当我查看 cat /var/log/syslog 时

我能看见

systemd[1]: /lib/systemd/system/YellowPages.service:7: Executable path is not 
absolute: dotnet /home/yp_app/YellowPages.dll
Run Code Online (Sandbox Code Playgroud)

我是 Linux 新手,我想知道我哪里错了。有人能帮我解决这个问题吗?

l'L*_*L'l 5

您的守护进程存在几个问题:

[Unit]
Description = Yellow pages .NET service
Run Code Online (Sandbox Code Playgroud)

删除等号周围的空格:

[Unit]
Description=Yellow pages .NET service
Run Code Online (Sandbox Code Playgroud)

ExecStart需要绝对路径(因此出现错误):

[Service]
Type=forking
WorkingDirectory=/home
ExecStart=/usr/bin/dotnet /home/yp_app/YellowPages.dll
Run Code Online (Sandbox Code Playgroud)

您的dotnet可执行文件可能位于其他地方,尽管您可以通过执行以下操作找到其绝对路径:

$ which dotnet
Run Code Online (Sandbox Code Playgroud)

返回的任何内容都将是要使用的绝对路径。