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