私のサーバーを起動するスクリプトがあります。その前に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"
}
これにより、上記の1行の出力は次のようになります。
started npm
openvpn still running