명령 출력을 기반으로 서비스를 시작하려면 어떻게 해야 합니까?

명령 출력을 기반으로 서비스를 시작하려면 어떻게 해야 합니까?

다른 서비스가 완료된 후 특정 서비스를 시작하고 싶습니다.완전히여기요. 특히 다른 서비스를 시작하기 전에 OpenVPN 서비스를 시작하고 완료해야 합니다.

평소에는 사용했지만 After=OpenVPN에서는 예상대로 작동하지 않았습니다. 즉, 부팅 직후 및 설정이 완료되기 전에 시작되었음을 의미합니다.

해결책은 내 서비스의 시작을 스크립트의 출력 또는 종료 상태 (*) 로 제한하는 것이었습니다 (또는 해당 스크립트에 의해 생성된 파일의 존재를 제한하는 것).

systemd를 사용하여 이를 달성할 수 있습니까?


(*) 이 스크립트는 VPN 터널을 통해서만 연결할 수 있는 것으로 알려진 호스트를 ping하고 연결이 이루어지면 종료(또는 파일 삭제)합니다.

답변1

서비스 단위를 구성할 수 있습니다.

Type=notify
NotifyAccess=all

초기화 중에 OpenVPN이 시작하는 마지막 스크립트(또는 해당 하위 스크립트)를 만듭니다(필요한 로그 출력을 기다린 후) systemd-notify.

관련 정보