web-dev-qa-db-ja.com

「top」コマンドはどのようにライブ結果を表示しますか?

結果をリアルタイムで表示するシェルスクリプトを作成するにはどうすればよいですか?

top コマンドのようなもので、一定の時間間隔の後に結果を更新します。

alt text

9
Lazer

あなたがやろうとしていることについてもっと具体的になれば、それは助けになるでしょう。

これが非常に単純な例です:

while true
do
    clear
    date
    sleep 1
done

watch(1) コマンドを使用して、スクリプトを定期的に実行できます。

watch -n 1 myscript.sh

これにより、1秒ごとにmyscript.shが実行され、各実行の間に画面がクリアされ、隅にタイムスタンプが表示されます。 -dオプションを使用すると、実行ごとの出力の違いも強調表示されます。

13
joshperry

そのデータのほとんどは、通常、/ proc仮想ファイルシステムプリミティブで公開されます。各プロセスには、PIDと呼ばれるディレクトリの/ procにエントリがあります。したがって、/ proc/5437には5437プロセスのプリミティブがあります。そこでプリミティブを読み、適切に解析することで、topの機能に近づくことができます。

Topは実際には、ファイルから取得するのではなく、カーネルから直接この情報を抽出する特定の関数呼び出しを呼び出すことによって機能します。 bashから同じことを行うには、/ proc仮想ファイルシステムからプルするか、psなどの他の呼び出しから抽出する必要があります。

リアルタイムに関しては、トップが提供する詳細レベルではそれは完全には実行可能ではありません。リアルタイムのように見えるように十分に細かく時間をスライスできますが、それでもタイムスライスを取得できます。

2
sysadmin1138

えーと、topの出力を長時間見ている場合で、プログラムが正常に動作しているかどうかを確認するだけでなく、 htop を使用することをお勧めします。

それはあなたに多くのリアルタイム情報を提供し、制御と管理がより簡単です。

棒グラフや列など、出力のレイアウトを変更できます。

2
polemon

topCurses を使用し、/procファイルシステムを読み取ります

1
Recursion