명령 실행이 성공하면 모니터링을 중단할 수 있기를 원합니다. 실제로 저는 를 통해 제공된 것과 반대되는 동작을 찾고 있습니다 --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에서 작동합니다.