2016-07-06 122 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