在 Ubuntu 20.04.2 TLS 服务器上,我需要在另一个服务完全启动后启动一个服务。具体来说,该openvpn-server
服务会创建一个tun0
IP 地址为 10.87.0.1 的接口,然后该rinetd
服务将绑定到该接口。所以rinetd
服务应该只在服务创建了该接口之后才启动。openvpn-server
rinetd
附带一个 sysvinit 服务脚本/etc/init.d/rinetd
说:
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
这导致rinetd
在系统启动期间在创建接口之前启动。 openvpn-server
然后它发出日志消息:
rinetd[792]: couldn't bind to address 10.87.0.1 port 873 (Cannot assign requested address)
并且在我手动重新启动它之前不接受连接sudo systemctl restart rinetd
,然后它运行得很好。
根据服务器进程sudo systemctl status
是openvpn
由一个名为[email protected]
. 延长Required-Start
线/etc/init.d/rinetd
说:
# Required-Start: $remote_fs $syslog openvpn-server@server
被适当地翻译systemd-sysv-generator
成另一行
[email protected]
在/run/systemd/generator.late/rinetd.service
. 但 systemd 忽略了这一点。rinetd
仍然显示相同的日志消息和故障,证明它仍然在启动之前openvpn-server
启动。
rinetd
只有在openvpn-server
服务完成其部分并创建接口之后,我才能让 systemd 可靠地启动服务?