예

명령 실행이 성공하면 모니터링을 중단할 수 있기를 원합니다. 실제로 저는 를 통해 제공된 것과 반대되는 동작을 찾고 있습니다 --errexit. 사람에 따르면 :

-e, --errexit 명령 오류 시 업데이트를 중지하고 키를 누른 후 종료됩니다.

주문하다:

ping -c 3 www.google.com

불완전한 연결로 인해 실패했습니다*. 다음을 통해 다시 실행하여 연결이 다시 시작되는지 확인할 수 있습니다.

watch -n 1 'ping -c 3 www.google.com'

ping실행이 오류 없이 진행된다면 시청을 중단하고 싶습니다.


* 연결을 확인하는 더 좋은 방법을 찾고 있는 것이 아닙니다. 이러한 ping예는 전화 신호가 자주 끊기는 기차에서 휴대폰 연결을 사용하는 데서 비롯됩니다.

답변1

네트워크 연결이 복원되면 핑 수신을 시작하므로 watch연결이 끊어진 후에 시작하고 출력이 변경된 후 종료하도록 지시하십시오.

watch -g -n 1 ping -c 3 www.google.com

탁구공을 받기 시작하면 시계가 종료됩니다.

답변2

보다 일반적인 해결 방법은 다음을 사용하여 명령의 종료 코드를 되돌릴 수 있습니다.!:

# Never terminates
watch --errexit echo "test"

# Terminates on first invocation
watch --errexit ! echo "test"

이는 모든 POSIX 셸, 특히 bash 및 zsh에서 작동합니다.

관련 정보