2016-07-06 83 views
0

我有一个我试图用单贯穿在Ubuntu 当我运行单systemd服务无法启动

systemctl status myservice.service 

我得到以下systemd的应用程序:

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所以不知道到哪里诊断问题

回答

1

首先,检查你的日志:

journalctl -u myservice.service 

添加给你的单元文件可能提高日志记录:

StandardOutput=journal+console 

在有些情况下,如果某些日志记录在服务退出之前发生,日志将不会被标记为该服务,因此在运行服务后,还请注意:

journalctl 

刚刚退出服务的条目。

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

我认为应用程序从命令行自行运行确定。假设它是以这种方式工作而不是从systemd那里工作,那么不同的环境变量就成了一个问题。将一行添加到应用程序的顶部以转储所有环境变量,并在从systemd与CLI运行时比较该输出。

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

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

+0

感谢mark看着journalctl指出用户没有对目录的权限。不是从命令行运行的问题,因为我以root身份运行 – Noel