Por que “slabtop -o” só retorna as primeiras 23 linhas quando o comando é canalizado?

3

Eu estava tentando analisar a saída de slabtop -o com 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 só retorna as primeiras 23 linhas quando o comando é canalizado?

    
por tjoe 03.06.2018 / 00:51

2 respostas

2

slabtop , mesmo com -o , sempre se limita a uma tela cheia de saída . Normalmente, ele faz isso perguntando ao terminal qual é seu tamanho, mas quando sua saída padrão não é um terminal, assume que a tela é de 80 colunas por 24 linhas e só produz 23 linhas (para evitar qualquer rolagem).

Esta desde que foi corrigida , e a correção está presente em procps-ng 3.3.13 e mais tarde.

    
por 03.06.2018 / 07:23
1

É 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, você pode usar script para enganar slabtop pensando que sua saída está sendo impressa no terminal. Você pode adicionar stty acima para alterar os 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

Como alternativa, você pode obter suas informações diretamente do arquivo /proc/slabinfo , que também é usado pelo slabtop .

    
por 03.06.2018 / 12:25

Tags