我正在中创建一个简单的控制台应用程序。需要在Linux 上作为服务运行的NET Core
使用以下命令编译应用程序:
dotnet publish-c release-r linux-x64——自包含
然后用从终端运行它
cd发布
/MyAppName
现在我正试图通过将其定义文件如下将其注册为服务
[Unit]
Description=Foo Bar Service
[Service]
WorkingDirectory=/home/Desktop/publish
ExecStart=./home/Desktop/publish/MyAppName
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-postservice
User=myuser
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
然后向注册服务
sudo systemctl启用myappname.service
但当我检查状态时,它会给我以下错误
Unit myappname.service的单位文件设置不正确。
既不是有效的可执行文件名,也不是绝对路径:/主页/桌面/发布/MyAppName
机组配置出现错误,机组将不会启动
如果有一个解决方案,我不必安装网络,我会非常感谢它。
感谢
您正在将工作目录设置为
/home/Desktop/publish
然后你在做
ExecStart=./home/Desktop/publish/MyAppName
这意味着正在运行的命令将是
/home/Desktop/publish/home/Desktop/publish/MyAppName
在配置的ExecStart
部分去掉./home/Desktop/publish
,它应该可以工作了。
或者,删除WorkingDirectory配置,只为可执行文件(如/home/Desktop/publish/MyAppName
(提供一个绝对路径(请注意,它不是以./
开头的,而是仅以/
开头的