我将此单元文件作为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
如果网络再次出现故障,有没有办法自动重启服务?
答案 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的更多信息。