명령이 파이프될 때 "slabtop -o"가 처음 23줄만 반환하는 이유는 무엇입니까?

명령이 파이프될 때 "slabtop -o"가 처음 23줄만 반환하는 이유는 무엇입니까?

캐시 크기의 합계를 계산하기 위해 awk를 사용하여 출력을 구문 분석하려고 했지만 slabtop -o출력이 파이프되면 처음 23줄만 반환됩니다. 우분투와 Centos에서 이것을 시도했습니다.

# slabtop --version
slabtop from procps-ng 3.3.10
# slabtop -o | wc -l
23

명령이 파이프될 때 처음 23줄만 반환하는 이유는 무엇입니까?

답변1

slabtop, 심지어 -o,항상 한 화면의 출력으로 제한됩니다.. 일반적으로 터미널에 크기가 무엇인지 물어봄으로써 그렇게 하지만, 표준 출력이 터미널이 아닌 경우에는화면이 80열 x 24행이라고 가정합니다.스크롤을 피하기 위해 23개의 행만 출력합니다.

이것이후로 수정됨procps-ng, 수정 사항은 3.3.13 이상 에 있습니다 .

답변2

출력이 터미널이 아닐 때 이런 방식으로 작동하도록 하드 코딩되었습니다.

여전히 리디렉션을 사용하고 더 많은 행을 얻으려면 출력이 터미널에 인쇄되고 있다고 생각하도록 script속이는 데 사용할 수 있습니다 . 그 위에 slabtop추가하여 의사 터미널 매개변수를 변경하고 출력 라인에 대한 제한을 설정할 수 있습니다.stty

# slabtop -o | wc -l
23
# script -q -c "slabtop -o" /dev/null | wc -l
46
# script -q -c "stty rows 999; slabtop -o" /dev/null | wc -l
147

/proc/slabinfo또는 파일 자체 에서도 사용되는 정보를 파일에서 직접 가져올 수도 있습니다 slabtop.

관련 정보