
Eu estava tentando analisar a saída do slabtop -o
awk para calcular a soma do tamanho do cache, mas quando a saída é canalizada, ela retorna apenas as primeiras 23 linhas. Eu tentei isso no Ubuntu e no Centos.
# slabtop --version
slabtop from procps-ng 3.3.10
# slabtop -o | wc -l
23
Por que ele retorna apenas as primeiras 23 linhas quando o comando é canalizado?
Responder1
slabtop
, mesmo com -o
,sempre se limita a uma tela cheia de saída. Normalmente faz isso perguntando ao terminal qual é o seu tamanho, mas quando sua saída padrão não é um terminal,assume que a tela tem 80 colunas por 24 linhase gera apenas 23 linhas (para evitar rolagem).
Essedesde que foi corrigido, e a correção está presente na procps-ng
versão 3.3.13 e posterior.
Responder2
É apenas codificado para funcionar dessa maneira quando a saída não é um terminal.
se você ainda quiser usar o redirecionamento e obter mais linhas, poderá script
fazê-lo slabtop
pensar que a saída está sendo impressa no terminal. Você pode adicionar stty
além disso a alteração dos parâmetros do pseudo-terminal e definir seu próprio limite para linhas de saída.
# 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
Alternativamente, você pode simplesmente obter suas informações diretamente do /proc/slabinfo
arquivo, que também é usado por slabtop
si só.