내 서버를 시작하는 스크립트가 있습니다. 그 전에 openvpn 클라이언트를 시작하고 싶습니다. 이것은 현재 작업 솔루션입니다.
#!/bin/sh
openvpn --client --config $OVPN_CONFIG &
sleep 10
npm start
sleep
다음 줄을 출력하여 openvpn이 성공적으로 실행되고 있는지 확인하고 싶습니다 .
Tue May 14 16:35:50 2019 Initialization Sequence Completed
어떻게 하나요? 이 스크립트는 Docker 컨테이너 진입점 역할을 합니다.
답변1
다음 bash는 단일 라인에서 실행되고 openvpn
, 출력을 기다리고 Init... Completed
, 즉시 시작되고, npm
백그라운드에서 계속 실행됩니다.openvpn
#! /bin/bash
grep -qF 'Initialization Sequence Completed' <(openvpn ...) && npm start
openvpn
인쇄 되지 않으면 Init... Completed
전체 명령이 openvpn
시작되지 않고 종료 됩니다 npm
.
나는 설치 openvpn
도 하지 않았으므로 npm
다음 기능을 사용하여 동작을 시뮬레이션합니다.
openvpn() {
echo "something something"
sleep 1
echo "$(date) Initialization Sequence Completed"
sleep 1
echo "openvpn still running" >&2 # prints to stderr so that we see it
}
npm() {
echo "started npm"
}
이를 통해 위의 한 줄의 출력은 다음과 같습니다.
started npm
openvpn still running