如果网络连接断开,则重新启动systemd服务

时间:2018-02-08 15:24:23

标签: node.js linux networking service systemd

我将此单元文件作为systemd服务运行。它基本上启动了在本地网络上的Raspberry Pi上运行的Nodejs Express应用程序。应用程序运行正常,但如果由于某种原因路由器或网络再次关闭并重新备份,应用程序将停止侦听,我必须重新启动systemd服务才能使其再次运行。

[Unit]
Description=Employee Manager PiClock VueJs App
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/home/pi/.nvm/versions/node/v8.9.4/bin/node /home/pi/employee-manager-app/vuejs-app-server/app.js
User=pi
Restart=always
# Restart service after 2 seconds if node service crashes
RestartSec=2

[Install]
WantedBy=multi-user.target

如果网络再次出现故障,有没有办法自动重启服务?

2 个答案:

答案 0 :(得分:2)

达到系统目标一次,并且在连接状态更改时不再触发。根据您的网络管理方式,有以下几种选择:

如果您已经使用 NetworkManager ,则可以利用其在网络更改时触发的dispatcher scripts

如果您使用 systemd-networkd ,则可以使用以类似方式运作的networkd-dispatcher

对于 netctl ,您可以在界面恢复时使用netctl hooks

wicd 以及许多其他人都有类似的功能,但据我所知,systemd缺乏自己的持久网络监控。

答案 1 :(得分:1)

BindsTo部分使用[Unit]

[Unit]
Description=Employee Manager PiClock VueJs App
Wants=network-online.target
After=network-online.target
BindsTo=network.service

有关here的更多信息。