![명령 출력을 기반으로 서비스를 시작하려면 어떻게 해야 합니까?](https://linux55.com/image/119667/%EB%AA%85%EB%A0%B9%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
다른 서비스가 완료된 후 특정 서비스를 시작하고 싶습니다.완전히여기요. 특히 다른 서비스를 시작하기 전에 OpenVPN 서비스를 시작하고 완료해야 합니다.
평소에는 사용했지만 After=
OpenVPN에서는 예상대로 작동하지 않았습니다. 즉, 부팅 직후 및 설정이 완료되기 전에 시작되었음을 의미합니다.
해결책은 내 서비스의 시작을 스크립트의 출력 또는 종료 상태 (*) 로 제한하는 것이었습니다 (또는 해당 스크립트에 의해 생성된 파일의 존재를 제한하는 것).
systemd를 사용하여 이를 달성할 수 있습니까?
(*) 이 스크립트는 VPN 터널을 통해서만 연결할 수 있는 것으로 알려진 호스트를 ping하고 연결이 이루어지면 종료(또는 파일 삭제)합니다.
답변1
서비스 단위를 구성할 수 있습니다.
Type=notify
NotifyAccess=all
초기화 중에 OpenVPN이 시작하는 마지막 스크립트(또는 해당 하위 스크립트)를 만듭니다(필요한 로그 출력을 기다린 후) systemd-notify
.