2

我有一个只能在线启动自身的网络代理,否则它会退出并出现错误。为了守护该代理,我编写了以下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 来确保在启动这个守护进程之前已经建立了连接。

4

1 回答 1

4

向您的服务添加一个 ExecStartPre 语句,该语句调用一个脚本,该脚本在网络达到您的满意之前不会完成。

根据您的配置和需要,您可以循环直到 ping 一个 Internet 主机成功,或者检查您的接口是否具有适用于您的网络的有效 IP。如果物理连接足以满足您的需求,请让您的脚本检查 /sys/class/net//operstate 的状态。

您还可以在它自己的单元文件中调用这样的脚本并将其添加到服务文件中的 After 语句中。

于 2013-12-24T01:26:02.087 回答