コマンドがパイプされているときに「slabtop -o」が最初の 23 行のみを返すのはなぜですか?

コマンドがパイプされているときに「slabtop -o」が最初の 23 行のみを返すのはなぜですか?

slabtop -oキャッシュ サイズの合計を計算するために awk で出力を解析しようとしましたが、出力がパイプされると最初の 23 行のみが返されます。Ubuntu と Centos でこれを試しました。

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

コマンドがパイプされると、最初の 23 行だけが返されるのはなぜですか?

答え1

slabtop、 でもで-o常に1画面分の出力に制限されます通常は端末にサイズを問い合わせるが、標準出力が端末でない場合は、画面は80列×24行であると想定していますスクロールを回避するために、23 行のみを出力します。

これ修正されて以来、修正はprocps-ng3.3.13 以降に存在します。

答え2

出力が端末ではない場合にこのように動作するようにハードコードされているだけです。

それでもリダイレクトを使用して行数を増やしたい場合は、 を使用して、出力が端末に印刷されていると思わせることscriptができます。さらに、疑似端末パラメータを変更して、出力行の制限を独自に設定することもできます。slabtopstty

# 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

あるいは、ファイルから直接情報を取得することもできます/proc/slabinfo。ファイル自体は単独でも使用されますslabtop

関連情報