コマンド
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つのプロセスの情報を示すことになります。
コメント