web-dev-qa-db-ja.com

「トップ」を一度だけ実行して終了する方法はありますか?

シェルコマンドtopの出力は、マシンの正常性を大まかに把握するためのシンプルで使い慣れた方法であることがわかりました。大まかな監視の目的で、マシン上の小さなWebサーバーからtopの出力(またはそれに非常に類似したもの)を提供したいと思います。

文字をフォーマットせずに、テキスト出力を正確にonceに書き込む方法はありますか?私はこれを試しました:

(sleep 1; echo 'q') | top > output.txt

これはcloseのようですが、(1)1画面分以上の情報が得られないという保証はありません。(2)すべて削除する必要があります。端末フォーマット文字。

または、マシン全体とプロセスレベルの両方のメモリ/ CPU使用量/稼働時間の情報を一覧表示する他のtopのようなコマンドはありますか?

(理想的には、私たちの開発者はMacを使用しており、製品環境はLinuxであるため、LinuxとMac OS Xの両方に移植可能な戦略が大好きです。)

13
Mickalot

Linuxでは、これを試すことができます:

top -bn1 > output.txt

man topから:

-b : Batch-mode operation
            Starts top in 'Batch' mode, which could be useful for sending
            output from top to other programs or  to  a  file.   In  this
            mode, top will not accept input and runs until the iterations
            limit you've set with the '-n' command-line option  or  until
            killed.
....
-n : Number-of-iterations limit as:  -n number
            Specifies  the  maximum  number of iterations, or frames, top
            should produce before ending.

OS Xでは、次のことを試してください。

top -l 1

トップOSXマンページ から:

 -l <samples>
              Use logging mode and display <samples> samples, even if 
              standard output is a terminal. 0 is treated  as  infinity.   
              Rather than redisplaying, output is periodically printed in 
              raw form. Note that the first sample displayed will have an 
              invalid %CPU displayed for each process,  as it is calculated 
              using the delta between samples.
23
cuonglm

Windowsシステムから同様のタイプ番号を取得するには、powershellを確認する必要があります。

あなただけのプロセスのリストを取得してget-processを見てください。これを見てください 参照

さらに検索を行ったところ、素敵な小さなコマンド here が見つかりました。

提示されたwhileループを外した場合、ニーズは次のようになります。

ps | sort -desc cpu | select -first 30

powershellのpsget-processのエイリアスです。

1
Yuppers