使用 systemd 啟動單一服務

使用 systemd 啟動單一服務

我最近閱讀了很多有關 systemd 的內容,但我不知道如何mono-service透過 systemd 運行我的系統。

以下是我目前的 systemd 守護程式配置:

root@LNXOSESTNL:/opt/omnius-statusdaemon# cat /etc/systemd/system/omnius-statusdaemon.service 
[Unit]
Description="Omnius StatusDaemon"
After=network.target

[Service]
Type=simple
User=omnius-statusdaemon
Group=omnius-statusdaemon
ExecStart=/usr/bin/mono-service -d:/opt/omnius-statusdaemon /opt/omnius-statusdaemon/Dynacommerce.StatusQueueService.exe
PIDFile=/tmp/omnius-statusdaemon.pid
StandardOutput=journal+console

[Install]
WantedBy=default.target

當我直接運行上面的 exec 腳本時,一切都工作正常並且我的mono-service正在運行。但透過 systemd 輸出如下:

root@LNXOSESTNL:/opt/omnius-statusdaemon# systemctl status omnius-statusdaemon.service
● omnius-statusdaemon.service - "Omnius StatusDaemon"
   Loaded: loaded (/etc/systemd/system/omnius-statusdaemon.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2018-03-17 11:26:38 CET; 2s ago
  Process: 11099 ExecStart=/usr/bin/mono-service -d:/opt/omnius-statusdaemon /opt/omnius-statusdaemon/Dynacommerce.StatusQueueService.exe (code=exited, status=0/SUCCESS)
 Main PID: 11099 (code=exited, status=0/SUCCESS)

Mar 17 11:26:38 LNXOSESTNL systemd[1]: Started "Omnius StatusDaemon".

希望有人能幫助我指引正確的方向。

答案1

SystemD 認為服務已死亡,因為預期路徑上沒有 PID 檔案。這個pid檔案應該由你的服務創建,systemd只是檢查,它不會創建這個檔案。如果您不想在服務中建立此文件,也許您可以在 部分中使用小型 shell 腳本建立它ExecStartPost=

相關內容