當我啟動或重新啟動服務時 systemd 掛起

當我啟動或重新啟動服務時 systemd 掛起

升級到 16.04 後,我是 systemd 新手,在啟動和重新啟動服務時遇到問題。當我跑步(例如)...

systemctl start djalbat.com

……它似乎有效,但是我沒有收到提示,它似乎掛起。如果我ctrl-c返回提示然後測試服務是否已啟動,它似乎已經啟動了。我想知道配置中有什麼會導致這種情況發生?這裡是:

[Unit]
Description=djalbat.com


[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log


[Install]
WantedBy=multi-user.target

另外,如果有人能指出最後一條WantedBy指令的必要性,我們將不勝感激。

答案1

所以結果發現用設定執行的命令ExecStart並沒有而該systemd服務是為分叉可執行檔配置的。這導致systemctl等待可執行檔的 for 導致不傳回命令列。

可執行檔的正確配置不就是使用Type=simple.

[Unit]
Description=djalbat.com

[Service]
Type=simple
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log

[Install]
WantedBy=multi-user.target

需要WantedBy將此單元與目標連接起來,因此當達到適當的目標時,該單元或服務將自動啟動,並啟用該服務以自動啟動

systemctl enable djalbat

systemd對服務文件進行更改後,不要忘記刷新

systemctl daemon-reload

相關內容