Warum gibt „slabtop -o“ nur die ersten 23 Zeilen zurück, wenn der Befehl weitergeleitet wird?

Warum gibt „slabtop -o“ nur die ersten 23 Zeilen zurück, wenn der Befehl weitergeleitet wird?

Ich habe versucht, die Ausgabe mit awk zu analysieren, slabtop -oum die Summe der Cache-Größe zu berechnen, aber wenn die Ausgabe weitergeleitet wird, werden nur die ersten 23 Zeilen zurückgegeben. Ich habe dies unter Ubuntu und Centos versucht.

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

Warum werden beim Weiterleiten des Befehls nur die ersten 23 Zeilen zurückgegeben?

Antwort1

slabtop, sogar mit -o,beschränkt sich immer auf die Ausgabe einer Bildschirmseite. Normalerweise geschieht dies, indem das Terminal nach seiner Größe gefragt wird, aber wenn die Standardausgabe kein Terminal ist,Es wird davon ausgegangen, dass der Bildschirm 80 Spalten mal 24 Zeilen umfasstund gibt nur 23 Zeilen aus (um Scrollen zu vermeiden).

Dasda wurde behoben, und der Fix ist in procps-ng3.3.13 und höher vorhanden.

Antwort2

Es ist einfach fest codiert, auf diese Weise zu funktionieren, wenn die Ausgabe kein Terminal ist.

Wenn Sie dennoch die Umleitung verwenden und mehr Zeilen erhalten möchten, können Sie scriptden Eindruck erwecken slabtop, dass die Ausgabe auf dem Terminal gedruckt wird. sttyDarüber hinaus können Sie Pseudoterminalparameter ändern und Ihr eigenes Limit für Ausgabezeilen festlegen.

# 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

Alternativ können Sie Ihre Informationen auch direkt aus /proc/slabinfoder Datei abrufen, die auch selbst verwendet wird slabtop.

verwandte Informationen