重新启动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

如果网络逐渐下降,是否有一种方法可以自动重新启动服务?

SystemD目标已达到一次,并且在连接状态更改时不会再次发射。根据如何管理网络,有几个选择:

如果您已经使用 NetworkManager 可以使用其在网络上启动的调度程序脚本。

如果您使用 systemd-networkd 您可以使用以类似方式工作的NetworkD-dispatcher。

对于 netctl 您可以在接口返回时使用NetCtl挂钩。

WICD 以及许多其他功能都具有相似的功能,但据我所知,Systemd缺乏自己的持久网络监控。

在Fedora 24到28上,您可以在[Unit]部分中使用BindsTo=network.service

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

有关更多信息,请阅读systemd.unit的人页。

最新更新