불특정 기간 동안 인터넷 연결 상태를 확인하세요.

불특정 기간 동안 인터넷 연결 상태를 확인하세요.

몇 가지 요인에 따라 연결 끊김이 발생할 수 있으며 항상 이더넷을 사용하지 않거나 항상 사용할 수는 없기 때문에(Wi-Fi를 사용하기 때문에) 언제 또는 적어도 확인하고 싶었습니다.얼마나알 수 없는 시간 동안 인터넷 연결이 끊어졌습니다.

제가 가장 알고 싶은 것은 연결을 유지해야 하기 때문에 프로세스/작업이 중지/실패하는 순간을 보지 않고 언제 연결이 끊어지는지 아는 것이 더 도움이 될 것입니다.

그래서 ping을 기본으로 사용해 보았습니다.

#!/bin/sh
retryme() {
while ! "$@"
do
  echo "not_working -> $(date)"
done
}

retryme ping google.com

ping문제는 실제 시작과 실제 핑 사이에 약간의 6~5초 지연이 있다는 것입니다 ping. (해당 플래그를 사용하면 지연이 약 1초 정도 줄어들지만 -A)

이 외에도 다음과 같은 경우를 제외하고는 연결이 끊어졌을 때만 출력(원하는 효과)만 표시됩니다.

#!/bin/sh -x
retryme() {
while ! "$@"
do
  echo "not_working -> $(date)"
done
}

pingme() {
ping -A google.com &>/dev/null
}

retryme pingme

그런데 재시도 기능을 사용하지 않고 인터넷 연결이 끊어지고 "재시도"를 하면 멈춥니다...

더 좋은 방법이 있나요? 아마도 ping 이외의 다른 것을 사용할 수도 있습니다(POSIX나 bash 및/또는 기타 Linux 도구 선호).

답변1

다음과 같이 작동하는 것 같습니다.

#!/bin/sh
retryme() {
while ! "$@"
do
  echo "not_working -> $(date)"
done
}

pingme() {
ping -A -W 1 8.8.8.8 &>/dev/null
}

retryme pingme

관련 정보