Por que "slabtop -o" retorna apenas as primeiras 23 linhas quando o comando é canalizado?

Por que "slabtop -o" retorna apenas as primeiras 23 linhas quando o comando é canalizado?

Eu estava tentando analisar a saída do slabtop -oawk 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-ngversã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á scriptfazê-lo slabtoppensar que a saída está sendo impressa no terminal. Você pode adicionar sttyalé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/slabinfoarquivo, que também é usado por slabtopsi só.

informação relacionada