¿Por qué "slabtop -o" solo devuelve las primeras 23 líneas cuando se canaliza el comando?

¿Por qué "slabtop -o" solo devuelve las primeras 23 líneas cuando se canaliza el comando?

Estaba intentando analizar la salida slabtop -ocon awk para calcular la suma del tamaño de la caché, pero cuando la salida se canaliza, solo devuelve las primeras 23 líneas. Probé esto en Ubuntu y Centos.

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

¿Por qué solo devuelve las primeras 23 líneas cuando se canaliza el comando?

Respuesta1

slabtop, incluso con -o,siempre se limita a una pantalla llena de resultados. Normalmente lo hace preguntando al terminal cuál es su tamaño, pero cuando su salida estándar no es un terminal,se supone que la pantalla tiene 80 columnas por 24 filasy solo genera 23 filas (para evitar cualquier desplazamiento).

Esteya que ha sido arregladoy la solución está presente en procps-ng3.3.13 y posteriores.

Respuesta2

Simplemente está codificado para funcionar de esta manera cuando la salida no es una terminal.

Si aún desea usar la redirección y obtener más filas, puede usarla scriptpara hacerle slabtopcreer que la salida se está imprimiendo en la terminal. Puede agregar sttyademás cambiar los parámetros del pseudo-terminal y establecer su propio límite para las líneas de salida.

# 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, puede obtener su información directamente desde /proc/slabinfoel archivo, que también se utiliza por slabtopsí mismo.

información relacionada