3

期待スクリプトを使用して、トップ コマンドの最初の 5 行を取得しようとしています。この期待スクリプトをシェルスクリプトから他のものと一緒に呼び出しています。

top | head -5以下の出力が得られます。つまり、CPU統計なしです-

トップ - 09:10:58 アップ 46 日、17:03、12 ユーザー、負荷平均: 0.01、0.02、0.00 タスク: 合計 138、1 実行中、137 スリープ、0 停止、0 ゾンビ

メモリ: 合計 16432400k、使用済み 8408096k、空き 8024304k、バッファ 609200k スワップ: 合計 6290736k、使用済み 0k、空き 6290736k、キャッシュ 6754356k

そのリモート サーバーでコマンドだけを実行するとtop、CPU 状態の行が更新されるまでに 2 ~ 3 秒の遅延があることがわかります。CPU 状態が更新された 5 行すべてを取得するのを手伝ってもらえますか? 以下は私の期待スクリプトです -

#!/usr/bin/expect -f
set user1 abc
set pass1 pass
set timeout 8
match_max 1000
spawn ssh -C -o stricthostkeychecking=no $user1@<ip>
expect "*?assword:*"
send  "$pass3\r"
expect "?xterm*"
send "\r"
send "top | head -5\r"
expect eof
4

2 に答える 2

8

デフォルトの の代わりに実行topする必要があります。さらに、測定値を取得するために実行する反復回数を定義する必要があります。batch modeinteractive modetop

num_iterations=3
top -b -n $num_iterations | head -5

出力に上位 5 つのプロセスのみをリストし、表示される統計ヘッダーをスキップする場合は、次のようにします。

num_iterations=3
top -b -n $num_iterations | sed -n '8,12p'

また、必要に応じて の値を調整しnum_iterationsます。

于 2013-03-03T09:59:54.223 に答える