結果をリアルタイムで表示するシェルスクリプトを作成するにはどうすればよいですか?
top
コマンドのようなもので、一定の時間間隔の後に結果を更新します。
あなたがやろうとしていることについてもっと具体的になれば、それは助けになるでしょう。
これが非常に単純な例です:
while true
do
clear
date
sleep 1
done
watch(1) コマンドを使用して、スクリプトを定期的に実行できます。
watch -n 1 myscript.sh
これにより、1秒ごとにmyscript.sh
が実行され、各実行の間に画面がクリアされ、隅にタイムスタンプが表示されます。 -d
オプションを使用すると、実行ごとの出力の違いも強調表示されます。
そのデータのほとんどは、通常、/ proc仮想ファイルシステムプリミティブで公開されます。各プロセスには、PIDと呼ばれるディレクトリの/ procにエントリがあります。したがって、/ proc/5437には5437プロセスのプリミティブがあります。そこでプリミティブを読み、適切に解析することで、topの機能に近づくことができます。
Topは実際には、ファイルから取得するのではなく、カーネルから直接この情報を抽出する特定の関数呼び出しを呼び出すことによって機能します。 bashから同じことを行うには、/ proc仮想ファイルシステムからプルするか、ps
などの他の呼び出しから抽出する必要があります。
リアルタイムに関しては、トップが提供する詳細レベルではそれは完全には実行可能ではありません。リアルタイムのように見えるように十分に細かく時間をスライスできますが、それでもタイムスライスを取得できます。
えーと、top
の出力を長時間見ている場合で、プログラムが正常に動作しているかどうかを確認するだけでなく、 htop を使用することをお勧めします。
それはあなたに多くのリアルタイム情報を提供し、制御と管理がより簡単です。
棒グラフや列など、出力のレイアウトを変更できます。
top
は Curses を使用し、/proc
ファイルシステムを読み取ります