簡體   English   中英

系統服務未激活(已死)

[英]systemd service is inactive(dead)

[Service]
Type = forking
PIDFile = /var/run/learninglocker.pid
ExecStart = /usr/bin/npm  start
WorkingDirectory = /opt/learninglocker
User = root
Group = root
EnvironmentFile = /opt/learninglocker/environment
StandardOutput = syslog
StandardError = syslog
SyslogIdentifier = learninglocker
LimitCORE = infinity
LimitNOFILE = infinity
LimitNPROC = infinity
TimeoutStartSec = "2min 30s"

[Unit]
After = network.target

[Install]
WantedBy = multi-user.target

它是一個節點應用程序。

當我運行“ npm start”時,它將被執行並運行四個不同的進程。 但是,當我運行“ systemctl start learninglocker.service”時,它運行了幾秒鍾[即活動(運行)]並失敗,並且四個進程再次在后面運行。

我的問題是:如果我使用Type = Simple還是應該使用“ forking”,可以嗎?

如果使用類型“ forking”,服務將“失敗”,並且沒有錯誤消息。

您可以在本文中找到Systemd的Simple,Forking和其他啟動選項之間的區別: https : //superuser.com/questions/1274901/systemd-forking-vs-simple/1274913

通常,如果啟動腳本被阻止,則必須使用simple;如果啟動腳本在沒有systemd的幫助下進行分叉,則必須使用fork(對於npm start來說可能就是這種情況)。

另外,您可能必須在服務描述符中添加“ RemainAfterExit = true”,以便systemd認為該服務仍在運行。 您還需要定義一個ExecStop腳本,以便systemd知道如何停止您的服務。

您還可以參考本主題,以了解如何為節點js定義systemd啟動腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM