单声道系统服务无法启动

mono systemd service wont start

我有一个应用程序,我正在尝试 运行 通过 systemd 在 ubuntu 上使用单声道 当我运行

systemctl status myservice.service

我得到以下信息:

 Loaded: loaded (/lib/systemd/system/myservice.service; bad; vendor preset: enabled)
   Active: inactive (dead)

我的服务文件如下:

[Unit]
Description=The description
After=network.target

[Service]
User=theuser

ExecStart=/usr/bin/mono -- /home/pathtoservice/myapplication.exe --parameter1=p1 --parameter2=p2 


[Install]
WantedBy=multi-user.target

我有 运行:

/usr/bin/mono -- /home/pathtoservice/myapplication.exe --parameter1=p1 --parameter2=p2 

从命令行运行。 关于什么是错误的任何想法?

我认为它在服务文件中,但查看了其他示例但看不出它有什么问题。 ubuntu 的新手,所以不确定去哪里诊断问题

首先,检查您的日志:

journalctl -u myservice.service

将此添加到您的单元文件可能会改进日志记录:

StandardOutput=journal+console

在某些情况下,如果某些日志记录发生在服务退出之前,日志将不会被服务标记,因此在您 运行 服务之后,还要查看:

journalctl

对于您的服务刚刚退出后的条目。

此外,请尝试使用 network-online.target

而不是使用 network.target

我认为应用 运行 可以通过命令行本身正常运行。假设它以这种方式工作而不是来自 systemd,不同的环境变量可能是一个问题。在您的应用程序顶部添加一行以转储所有环境变量,并比较 systemd 与 CLI 的 运行 时的输出。

最后,查看 Type= 的文档。如果默认 Type= 不适用于您的情况,请适当设置它。

未来关于 systemd 的问题可能会在 Unix & Linux StackExchange 得到更好的回答,因为它们与编程没有直接关系。