我有一个只能在线启动自己的网络代理,否则会因错误退出。为了守护该代理,我编写了以下systemd
服务文件:
[Unit]
Description=A Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/srv/proxy/aproxy/bin/main
[Install]
WantedBy=multi-user.target
当服务器连接到Internet时,此服务文件可以成功启动代理,但它在系统启动时不起作用,可能是由于缺少与Internet访问的连接。所以我需要systemd来确保在启动这个守护进程之前建立了连接。
答案 0 :(得分:4)
向您的服务添加一个ExecStartPre语句,该语句调用的脚本在网络满意之前无法完成。
根据您的配置和需求,您可以循环,直到ping网络主机成功或检查您的界面是否具有适用于您的网络的IP。如果物理连接足以满足您的需求,您的脚本将检查/ sys / class / net // operstate的状态。
您也可以在其自己的单元文件中调用此类脚本,并将其添加到服务文件中的After语句中。