
다음 명령을 실행하여 호스트가 재부팅에서 복구된 시기를 감지하려고 합니다.
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