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


9

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

top一定の時間間隔を置いて結果を更新するコマンドのようなもの。

代替テキスト


6
おそらくcursesインターフェイスを使用しています...しかし、これはプログラミングの問題であり、SOに属していると思います
xenoterracide 2010

回答:



13

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

watch -n 1 myscript.sh

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


時計で答える方法を考えていたところです。
ケビンM

私は持っていませんwatch。もっと具体的に教えていただけますか?どんなOS?
クリスページ

2

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

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

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


2

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

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

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


私は彼が、特にtopやhtopについてではなく、定期的にポーリングするアプリをどのように書くかを尋ねていると思います。
Chris

1

topCursesを使用して/procファイルシステムを読み取る


1
がないシステムを除いて/proc。情報を取得する別の方法は、sysctl(8)/ sysctl(3)です。
Chris Page
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.