当我启动或重新启动服务时 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等待可执行文件的执行,从而导致不返回命令行。

正确的可执行文件配置如下:就是使用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

相关内容