トップコマンドで特定の列を取得できますか?たとえば、メモリ使用率とCPU使用率の列のみに興味があります。
Topコマンドの表示列を上記の2つの列だけに減らすにはどうすればよいですか?
注:このバージョンの 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は、Fedora/CentOS/RHELおよびその他のバリアントに含まれているtop
のバージョンです。
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
キーを使用できます ftop
では、どの列を表示するかどうかを指定できる二次画面に移動します。
例えば:
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
詳細については、manページのセクション5「5。ファイル」を参照してください。
[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
注:列名もあるため、headではなく4の代わりに-n 5
列$ 9、$ 10、$ 12は、CPU、MEM、コマンドを意味します。 'top'コマンドを使用して列番号を取得します
メモリ使用法でソート(これを実行するには、「トップ」が-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
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}
コマンドライン設定
ユーザー.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