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

Gio*_*ter 6 linux service networking node.js 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
Run Code Online (Sandbox Code Playgroud)

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

mic*_*cke 6

Systemd 目标一旦达到,当连接状态发生变化时不会再次触发。根据您的网络管理方式,有以下几种选择:

如果您已经使用NetworkManager,则可以利用其在网络更改时触发的调度程序脚本

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

对于netctl,您可以在界面恢复时使用netctl 挂钩。

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


iam*_*ser 1

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

[Unit]
Description=Employee Manager PiClock VueJs App
Wants=network-online.target
After=network-online.target
BindsTo=network.service
Run Code Online (Sandbox Code Playgroud)

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