파이프 된 명령 / 프로그램 체인으로 watch 명령을 사용하는 방법


50

나는 보통 watch리눅스 유틸리티를 사용하여 n 초마다 명령의 출력을 반복적으로 볼 수 있습니다.watch df -h /some_volume/

그러나 다음 watch과 같은 파이프 일련의 명령 으로 사용할 수없는 것 같습니다.

$ watch ls -ltr|tail -n 1

내가 그렇게하면 watch실제로보고 ls -ltr있고 출력이 전달되어 tail -n 1아무것도 출력하지 않습니다.

내가 이것을 시도하면 :

$ watch (ls -ltr|tail -n 1)

나는 얻다

$ watch: syntax error near unexpected token `ls'

그리고 다음 중 하나라도 다른 이유로 실패합니다.

$ watch <(ls -ltr|tail -n 1)

$ watch < <(ls -ltr|tail -n 1)

$ watch $(ls -ltr|tail -n 1)

$ watch `ls -ltr|tail -n 1)`

그리고 마지막으로 이렇게하면 :

$ watch echo $(ls -ltr|tail -n 1)

내부 명령 $()이 한 번만 실행되고 결과 출력 문자열이 항상 리터럴로 인쇄 ( "감시") 되므로 주어진 간격으로 출력이 변경되지 않습니다 .

watch파이프 된 명령 체인을 사용 하여 명령을 작동 시키려면 어떻게해야 합니까?


실행 man watch하고 예제까지 아래로 스크롤합니다.
don_crissti

답변:


80
watch 'command | othertool | yet-another-tool'

1
일반적인 접근법뿐만 아니라 watch sh -c 'command | etc'특히 문제에서 시도한 접근법을 살펴볼 가치가 있습니다 .
sourcejedi

@sourcejedi 나는 왜 그런지 알지 못했지만 이것이 항상 같은 결과를 산출하지는 않습니다.
Michael Mior


0

하위 디렉토리의 모든 파일도 나열하려면 exec 옵션과 함께 find 명령을 사용할 수 있습니다.

watch30 초마다 업데이트되며 find현재 디렉토리 (하위 디렉토리 포함)에서 모든 * .log 파일을 검색하고 파일 이름과 마지막 10 행을 인쇄합니다.

watch -n30 'find . -name "*.log" -print -exec tail -n10 {} \; '
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.