トップコマンド-表示される列を減らす方法


17

topコマンドで特定の列を取得できますか。たとえば、メモリ使用率とCPU使用率の列のみに興味があります。

topコマンドの表示列を上記の2列のみに減らすにはどうすればよいですか?


3
OS どのtopバリアントですか?多数のトップ実装があります。
ステファンシャゼル

OSと最上位バージョン(top -h)をお知らせください。
slm

回答:


19

注:top(procps)のこのバージョンがあると仮定します。このコマンドで確認できます:

$ top --version
    top: procps version 3.2.8
usage:  top -hv | -bcisSH -d delay -n iterations [-u user | -U user] -p pid [,pid ...]

procpsは、多くの場合、topFedora / CentOS / RHELおよびその他のバリアントに含まれるバージョンです。

列を変更する

manページをtop見ると、「2b。列の選択と順序付け」というタイトルのセクションが表示されます。さまざまなフィールド/列の表示を切り替えるためのキーボードショートカットがあります。

例えば:

  f,o     . Fields/Columns: 'f' add or remove; 'o' change display order
  F or O  . Select sort field
  <,>     . Move sort field: '<' next col left; '>' next col right

キーfを使用topしてセカンダリ画面に移動し、どの列を表示するかどうかを指定できます。

例えば:

Current Fields:  ANOPQRSTUVbcdefgjlmyzWHIKX  for window 3:Mem
Toggle fields via field letter, type any other key to return 

* A: PID        = Process Id                                      * W: S          = Process Status
* N: %MEM       = Memory usage (RES)                              * H: PR         = Priority
* O: VIRT       = Virtual Image (kb)                              * I: NI         = Nice value
* P: SWAP       = Swapped size (kb)                               * K: %CPU       = CPU usage
* Q: RES        = Resident size (kb)                              * X: COMMAND    = Command name/line
* R: CODE       = Code size (kb)
...

さらに、これらは単なるサンプルです。必要な方法で列の切り替えが完了したら、を使用しEscて選択画面を終了します。

設定を保存しています

Shift+ Wを使用して変更を保存し、デフォルトにすることができます。

  W         Write configuration file

ファイルはここに保存され、$HOME/.toprc次のようになります。

$ more .toprc 
RCfile for "top with windows"       # shameless braggin'
Id:a, Mode_altscr=0, Mode_irixps=1, Delay_time=1.000, Curwin=2
Def fieldscur=AEHIoqTWKNMBcdfgjpLrsuvyzX
    winflags=129016, sortindx=19, maxtasks=0
    summclr=2, msgsclr=5, headclr=7, taskclr=7
Job fieldscur=ABcefgjlrstuvyzMKNHIWOPQDX
    winflags=63416, sortindx=13, maxtasks=0
    summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=ANOPQRSTUVbcdefgjlmyzWHIKX
    winflags=65464, sortindx=13, maxtasks=0
    summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=ABDECGfhijlopqrstuvyzMKNWX
    winflags=65464, sortindx=12, maxtasks=0
    summclr=3, msgsclr=3, headclr=2, taskclr=7

詳細については、マニュアルページのセクション5「5。ファイル」を参照してください。


コマンドラインフラグを使用して列/フィールドを変更する方法はありますか?これは、たとえば、さまざまなマシンでtopをチェックし、標準化された出力を取得する場合など、非常に便利です。
naught101 16

@ naught101-新しい質問がある場合は、メインサイトで質問してください。コメントは本当にそのためのものではありません。
slm

2

[Centos-6 | Ubuntu 12.10]このcmdは、CPU使用量によって4つの上位プロセスを出力します

top -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

出力

%CPU      %MEM      COMMAND
7.7       0.2       top
0.0       0.3       init
0.0       0.0       kthreadd
0.0       0.0       migration/0

注:列名もあるため、4ではなくhead -n 5

列$ 9、$ 10、$ 12は、CPU、MEM、COMMANDを意味します。「top」コマンドを使用して列番号を取得します

MEMORY USAGEで並べ替えます(これを実行するには、「トップ」が-mをサポートする必要があります)

# this work on my centos-6 machine, NOT work on my Ubuntu 12.10
top -m -bn 1 | grep "^ " | awk '{ printf("%-8s  %-8s  %-8s\n", $9, $10, $12); }' | head -n 5

これはtopのどのバージョンですか?
slm

centos-6.4を使用しました。Ubuntuのtopコマンドは、メモリ使用量をソートするための-mをサポートしていません。
ダンファット

興味深いことに、私はFedora(14)を使用しています。procps版のtopを取得しています。私はちょうどダブルチェックしましたが、CentOS 5 + 6でも同様に上位procpsを使用しています。F14ではコマンドが機能しませんでした。ただし、CentOS 5 + 6で動作します。このスレッドに出くわした人のための参考までに!
slm

1

JSON形式で表示し、ヘッダーも削除するには、

top -bn 1 | grep "^ " | awk '{ printf("%s%s%s\n","{CPU:"$9",","MEM:"$10",","CMD:"$12"}"); }' | head -n 6 | tail -n +2

以下のような出力、

{CPU:6.4,MEM:0.3,CMD:gnome-terminal}
{CPU:6.4,MEM:1.9,CMD:chrome}
{CPU:0.0,MEM:0.0,CMD:init}
{CPU:0.0,MEM:0.0,CMD:kthreadd}
{CPU:0.0,MEM:0.0,CMD:ksoftirqd/0}

あなたgrep | awk | head | tailは単一に合体することができますawk
ロアイマ

0

コマンドライン設定
ユーザーを上書きすることでユーザー全体に影響を与えたくなかった.toprcので、ユースケースごとに個別の設定を行うソリューションを思い付きました。ユーザーのホームディレクトリにあるものではなく、カスタム構成ファイル
top使用できます。変数を、必要に応じてファイルを含むカスタムディレクトリに
変更するだけです。HOME.toprc

# TOPRC_PROFILE_DIRECTORY contains .toprc (or can be created by saving using shift+w after configuring using keybindings) 
TOPRC_PROFILE_DIRECTORY="<your-directory>"
HOME="$TOPRC_PROFILE_DIRECTORY" top
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.