次のコマンドを実行して、ホストが再起動から回復したタイミングを検出しようとします。
ping -c 1 -W 1800 myhost
私はホストが30分前に正常にpingできるようにしたいと思いますssh
。ただし、ホストは30分が経過する前に開始されます。成功せずにping myhost
コマンドラインから手動で実行して確認できますping -c 1 -W 1800 myhost
。タイムアウトしました。
私のオペレーティングシステムは次のとおりです
$ uname -a
Linux dev-001 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 15 17:36:42 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
答え1
あなたのコマンドは、パケットを送信し(-c 1
)、応答のために最大30分を待つことです(-W 1800
)。
単一のパケットを送信するとホストがダウンする可能性があるため、応答を送信する可能性が低いため、期限に達してping
失敗が返されるまで待つ必要があります。
残念ながら、「成功するまで」簡単な方法はないので、ping
ループに合成する必要があります。この待機時間は最大1800秒で、5秒ごとにpingが送信されます。
end=$(($(date +%s) + 1800))
while [[ $(date +%s) -lt $end ]]
do
ping -c 1 -i 5 -w 30 -q myhost && break
done