0

特定のプロセスの %cpu %mem、CPU 時間など (多いほど良い) を監視するスクリプトを作成しようとしています。Windows のパフォーマンス モニター (perfmon) のようなもの。
そのためにすでにいくつかのツールが作成されていることは知っていますが、Linux と (solaris*/aix/hpux) の両方で動作する必要があるため、基本機能と組み込み機能を使用して実行する必要があります。
出力ログが更新されるように、perfmon.exe からの出力と同様の出力があれば素晴らしいと思います。たとえば、追跡されたプロセスが 5 秒ごとにフォーマットされます。

date %mem %cpu cputime private_bytes(?) virtual_bytes(?)        

トップからデータを抽出するか(実際には、使用されるすべてのOSで同じではありません)、「ps」クエリからデータを抽出しようとするかどうかわかりません。

私は次のような for ループでそうしようとしています:

for $count; do   
    sleep $delay  
    date >>output.txt  
    ps -A -o pid,%cpu,%mem,time -o comm= | grep -v grep | grep $process >> output.txt  
done  

ヒントをいただければ幸いです。

ブラジル

4

2 に答える 2

2

次のようなものを試してください

ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -C NAME

また

ps -o pid,user,%cpu,%mem,rss,vsize,time,cmd -p PID

-Aとにかく特定のプロセスのみに関心がある場合は使用しないでください。

于 2012-09-03T18:35:08.447 に答える
0

異なる Unice 間の移植性が目標である場合、アプローチは問題ないように見えますが (grep -v必要ありません)、共通のpsスイッチを使用するように注意してください。

于 2012-09-03T18:15:01.417 に答える