watch run 2 명령 사용


41

동일한 터미널 창에서 두 개의 명령을 감시해야합니다. 나는 같은 것을 의미한다

watch du -h filename.txt && df -h

그러나 출력은 하나만 표시됩니다.

그래서 내가 생각하는 것은 watch를 사용하여 동일한 창에서 여러 명령을 실행하지 못할 수 있다는 것입니다.

어떤 방법이 있으면 알려주십시오.

감사합니다.

답변:


66

명령을 인용 할 수 있습니다.

watch "du -h filename.txt && df -h"

그리고 그들은 함께 처형 될 것입니다.


고마워 올리. 실제로 사무실 PC이므로 실험을 감히하지 마십시오. 확실한 해결책을 위해 여기에 게시했습니다. 감사합니다.
rɑːdʒɑ

그들이 일할 거라고 확신하니? 실행할 때 권한 거부 오류가 발생하기 때문에 "df :`/ usr / raja / hostctrl / new ': 권한 거부"
rɑːdʒɑ

그것은 별도의 문제 인 것 같습니다. 시계에 싸여 있지 않아도 그 문제를 볼 수 있습니다.
Oli

3
이러한 예제 명령은 true로 반환되므로 작동 합니다 . 첫 번째 명령이 false를 반환 하면 두 번째 명령이 실행되지 않습니다 (때문에 boolean evaluation shortcut)
karatedog

3
FTR, 내 명령은 &&OP를 사용하기 때문에 사용합니다 &&. 명령과 명령의 조합은 정답이 아닙니다.
Oli

19

두 명령을 모두 실행하려면 . ;대신 명령을 분리하는 방법 중 하나 입니다 &&.

watch 'du -h filename.txt; df -h'

&&&&첫 번째 명령이 성공적으로 실행 된 경우 (exit status 0) 에만 두 번째 명령 (오른쪽의 두 번째 피연산자)을 실행할 수 있습니다. 이것이 의도 된 동작이라면로 이동하십시오 &&.


1
이 세미콜론 양식은 원래 질문에 대한 답으로 가장 좋습니다. "두 명령을 실행하려면"세미콜론을 사용하십시오! "하나의 명령을 실행하고 다른 명령을 실행하려면"&& ....를 사용하십시오.
JeremyDouglass

3

완전성을 위해 ...

 watch 'du -h filename.txt || true && df -h'

'|| true '부분은 어떤 이유로 실패하더라도 첫 번째 명령이 true로 평가되도록합니다. 이렇게하면 && 다음에 나오는 다음 명령이 첫 번째 출력에 관계없이 실행될 수 있습니다. 이것은 시나리오에서 불필요하며 가능한 것으로 표시합니다.


-1

여러 명령을 동시에 실행 &하려면 명령 사이에 단일 연산자를 사용하십시오. 처럼:

dothis & dothat

혼동을 없애기 위해 다음은 다양한 연산자의 작동 방식입니다.

c1 & c2  # Run both commands parallelly
c1 ; c2  # Run both commands one by one
c1 && c2 # Run c2 only if c1 exits successfully
c1 || c2 # Run c2 only if c1 fails

c1 및 c2는 두 명령을 병렬로 실행하지 않습니다. c1이 성공적으로 실행되면 c2 만 실행됩니다.
rɑːdʒɑ
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.