Systemd 服务可以依赖于远程 systemd 服务吗?

Systemd 服务可以依赖于远程 systemd 服务吗?

我正在尝试编写一个service依赖于偏僻的系统服务。是否有任何“标准”方法可以完成如此​​奇怪的事情?其用例是一些需要远程端点在启动时准备就绪的旧软件。

我知道我可以使用类似的东西等待这个在一个服务中ExecStartPre检查/等待直到某个特定的远程 TCP 端口可用(并且可能.socket在远程写入一个简单的单元)。但这似乎有点矫枉过正。 systemd 本身是否有一种方法可以与另一个远程 systemd 进行通信?

答案1

也许类似的东西ExecStartPre=systemctl --host=service-user@remote-host start remote-service可以用在本地服务文件的 ExecStartPre 中。

答案2

如果远程 systemd 服务打开远程服务器中的某个端口,您可以检查该端口是否从本地 systemd 服务打开。使用 bash 你可以写类似的东西

while ! echo > /dev/tcp/remoteserver/someport; do
  echo "waiting for remote service..."
  sleep 5s
done

当然,你需要告诉systemd在网络恢复之前不要启动这个服务https://wiki.archlinux.org/index.php/Systemd#Running_services_after_the_network_is_up

相关内容