dstat
커널 2.6 CentOS 6 64비트에서 실행할 때 . 다음과 같은 결과가 나타납니다.
# sed -n '4p' <(dstat -dl --float --nocolor 1 1) | awk -F '|' '{print $1,$2}' | awk '{print $1,$2,$3}'
Module dstat_disk24old failed to load. (No suitable block devices found to monitor)
0 0.01 0
흥미로운 점은 다음 줄입니다.
Module dstat_disk24old failed to load. (No suitable block devices found to monitor)
| grep -v failed
또는 를 추가하면 2> /dev/null
이 행이 필터링되지 않습니다. 을 추가하면 > a.txt
이 줄도 a.txt로 이동하지 않습니다. 그러면 이 줄이 화면에 인쇄되더라도 어느 스트림으로 갈지 알고 싶습니다.
답변1
표준 오류가 발생하며 기본값은 파일 설명자 2입니다. 에 있는 동안에는 cmd1 | cmd2
의 표준만 의 cmd1
표준으로 리디렉션됩니다 cmd2
.
관례적으로 모든 오류 및 진단 메시지는 표준 오류로 이동됩니다.
다음을 사용하여 확인할 수 있습니다 strace
.
$ strace -e write dstat -dl --float --nocolor 1 1
write(2, "Module dstat_disk24old failed to"..., 83Module dstat_disk24old failed to load. (No suitable block devices found to monitor)) = 83
write(2, "\n", 1
) = 1
write(1, "\33[7l---load-avg---\n 1m 5m 15m"..., 34---load-avg---
1m 5m 15m
) = 34
write(1, " 0 0 0\n", 15 0 0 0
) = 15
write(1, " 0 0 0\n", 15 0 0 0
) = 15
+++ exited with 0 +++
파이프가 표준 오류 출력을 캡처하도록 하려면 표준 오류를 표준 출력으로 리디렉션해야 합니다.
dstat -dl --float --nocolor 1 1 2>&1
답변2
이 >
파일 리디렉터는 표준 출력에서 작동합니다. grep도 볼 수 없다고 말씀하셨는데, 표준 오류라고 생각하시나요? 실제로 stderr인지 확인하고 캡처하려면 다음을 시도하십시오.
yourlongcommand 2> error.log
error.log를 확인하세요.