편집: 내 결론은 이 질문이 잘못된 위치에 게시되었다는 것입니다. 나풀어 주다Mac OS 특정 포럼에서는 즉시 답변이 나왔습니다.
가끔 인터넷 연결 문제가 약 4초 동안 지속되었다가 약 15초 안에 정상으로 돌아왔다가 다시 발생하는 경우가 있습니다. 제가 들은 바에 따르면 이 문제는 한 번에 5~7시간 동안 지속될 수 있습니다. 이를 더 잘 이해하여 이를 인터넷 서비스 제공업체에 전달하고 싶습니다.
지금까지 나는 다음을 사용했습니다.
ping 8.8.8.8 | while read line; do echo `date` - $line; done
중요한 것은 매초마다 핑 타임스탬프가 포함되어 있다는 것입니다. 타임스탬프를 사용하여 결과를 플롯하는 스크립트가 있습니다. 하지만 문제가 일주일에 2~3번만 발생하기 때문에 불필요한 데이터가 많이 수집되어 정리해야 합니다.
내가 원하는 것은 설정된 시간(예: 5-10분) 동안 매초 ping을 수행한 다음 설정된 시간(예: 5-10분) 동안 일시 중지하는 것입니다. 명령 이 있다는 것을 알고 sleep
그것을 사용해 보았지만 목표에 도달하지 못했습니다.
답변1
간격 및 수집 속성을 변경할 수 있습니다 ping
. 설명서( man ping
)에는 많은 정보가 포함되어 있지만 거기서부터 시작하는 것이 좋습니다.
#!/bin/sh
target=1.1.1.1 # Ping target
delay=$((60*5)) # Seconds (5 minutes)
while :
do
# Linux (GNU)
# ping -4 -q -n -c3 -i1 -w4 "$target" >/dev/null 2>&1 && st=ok || st=error
# Mac (OSX)
ping -q -n -c3 -i1 -t4 "$target" >/dev/null 2>&1 && st=ok || st=error
printf "%s - %s\n" "$(date)" "$st"
sleep "$delay"
done
pingit
와 같은 파일에 넣고 chmod a+x pingit
. 그런 다음 ./pingit
.
5분마다 3번의 연속 ping을 보냅니다. 성공하면 "정상"으로 간주되고, 그렇지 않으면 "오류"로 간주됩니다.
while … do
또 다른 옵션은 ...loop 구성을 제거 하고 각 루프에서 done
나머지 스크립트를 호출하는 것입니다.cron
질소분.