Linuxでトップ5位のメモリ占有しているプロセスを出すコマンド

Linux運用
この記事は約3分で読めます。

コマンド

ps -eo pid,%mem,rss,cmd --sort=-rss | awk 'NR==1{print "PID\t%MEM\tRSS(MB)\tCOMMAND"} NR>1{printf "%-8s %-6s %6.0fMB %s\n", $1, $2"%", $3/1024, $4}' | head -6

効果

PID     %MEM   RSS(MB)  COMMAND
1234    50%    1024MB   example_process1
5678    30%    512MB    example_process2
...

解釈&説明

このコマンドは、LinuxまたはUnix系のシステムで使用されるもので、メモリを最も多く消費している上位5つのプロセスを表示するためのものです。日本語で詳細に解釈してみましょう。

1. `ps`: 現在のシステムのプロセス情報を表示するためのコマンドです。

2. `-eo pid,%mem,rss,cmd`: `ps`コマンドのパラメーターで、出力形式を指定します。`pid`はプロセスIDを、`%mem`はメモリ使用率を、`rss`は物理メモリ使用量(KB単位)を、`cmd`はプロセスのコマンドラインを表します。

3. `–sort=-rss`: `–sort`パラメーターを使ってメモリ使用量で逆順にソートします(大きい順に並び替えます)。`-rss`はRSS(物理メモリ使用量)フィールドを指定します。

4. `|`: パイプ操作子で、1つのコマンドの出力を別のコマンドの入力として渡します。ここでは、`ps -eo pid,%mem,rss,cmd –sort=-rss`の出力を`awk`コマンドに渡します。

5. `awk`: テキスト処理の強力なコマンドラインツールです。

6. `’NR==1{print “PID\t%MEM\tRSS(MB)\tCOMMAND”}’`: これは`awk`の最初のアクションで、入力の最初の行(タイトル行)を処理します。行番号`NR`が1の場合、`awk`はタイトル行を出力し、各列のタイトルを含む行を表示します。

7. `’NR>1{printf “%-8s %-6s %6.0fMB %s\n”, $1, $2″%”, $3/1024, $4}’`: これは`awk`の2番目のアクションで、入力の他の行(2行目以降)を処理します。行番号`NR`が1より大きい場合、`awk`はプロセスの関連情報をフォーマットして表示します。`$1`、`$2`、`$3`、`$4`は、入力の各行の1列目、2列目、3列目、4列目を表します。つまり、プロセスID、メモリ使用率、物理メモリ使用量(MB単位)、プロセスのコマンドラインです。`printf`ステートメントは指定されたフォーマットでこれらの情報を出力し、メモリ使用量($3/1024)をMB単位に変換し、`%-8s`および`%-6s`を使用して出力を整列します。

8. `|`: 再度パイプ操作子を使用して、`awk`の出力を`head`コマンドに渡します。

9. `head -6`: 最後に、`head`コマンドを使って出力結果の最初の6行を表示します。ここで注意すべきは、タイトル行がすでに1行を占めているため、実際には残りの5行が、メモリを最も多く消費している5つのプロセスの情報を示すことになります。

コメント

タイトルとURLをコピーしました