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


13

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

文字をフォーマットせずに、テキスト出力を一度だけ書き込むためにtopを取得する方法はありますか?私はこれを試しました:

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

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

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

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

回答:


22

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.

これはtop、OS Xで-bフラグがサポートされている場合に私が探している答えとまったく同じように見えます。:-(残念ながら、それはありませんtop
。homebrew

@Mickalot:私の更新を参照してください。Mac OSXにGNU topをインストールできますか?
cuonglm 14

@Gnuoc: /usr/bin/top -l 1OSX 10.9.4では完璧です...ありがとう!GNUトップをインストールするためとして、私は上にインストールすることができ、私のマシンが、私は上にそれをインストールするには、他の開発者を説得する必要があるだろう彼らの私はむしろそれを避けると思いますので、彼らのために仕事に私のコードのための機械。(自作で利用できない場合は抵抗があります。)プラットフォームに基づいて切り替えるので、欲張りになります...準同等のWindowsを知っていますか(開発者は持っています)少数)粗雑なステータスページを持つこともできますか?(そうでない場合、それは大丈夫です、あなたの答えはすでに非常に役立ちます!)
ミカロット14

@Mickalot:OSXトップマンページのメモを思い出してください。表示される最初のサンプルは、サンプル間のデルタを使用して計算されるため、プロセスごとに無効な%CPUが表示されます。。Windowsユーザと、多分あなたは、 `` cygwin`使用することができます
cuonglm

@Gnuoc余分な点をありがとう。top -l 2サンプルの最初のページを削除できると思いますか?
ミカロット14

1

Windowsシステムから同様のタイプ番号を取得するには、powershellをご覧ください。

プロセスのリストを取得して確認するだけですget-process。このリファレンスをご覧ください

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

提示されているwhileループから抜けると、次のようになります。

ps | sort -desc cpu | select -first 30

pspowershellのはのエイリアスですget-process


それは素晴らしいアイデアのようですね!私はそれを試してみるために私のWindows-携えた同僚のいずれかを取得します...
Mickalot
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.