psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索もコマンド


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドP-T, プロセス管理コマンド > psコマンドでプロセスを確認する方法|auxと-efの違いやgrep検索もコマンド
「Webサーバーが落ちたかもしれないから、プロセスが動いているか確認したい」
「サーバーが重いので、CPUやメモリを食い潰している原因のプログラムを特定したい」
Linuxサーバーを運用していると、システム内で現在どんなプログラム(プロセス)が動いているのかを確認する場面に必ず直面します。

この記事では、現在実行中のプロセスを表示する ps コマンド の使い方を解説します。
現場のエンジニアが必ず使う2つの定番オプション(aux-ef)の違いから、grep コマンドと組み合わせて特定のプロセスだけを抽出する実務テクニックまで、トラブル対応で絶対に役立つノウハウをまとめました。

1. 現場で使うpsコマンドの「2大巨頭」

ps コマンドには非常に多くのオプションがありますが、実務で使うのは実質的に以下の2パターンだけです。この2つさえ覚えておけば現場で困ることはありません。

パターンA: ps aux (BSD系オプション)

Linux界隈で最もポピュラーな組み合わせです。システム上で動いている「すべてのユーザー」の「すべてのプロセス」を、CPUやメモリの使用率も含めて詳細に表示します。(※ハイフンは付けません)

# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 123456 4567 ? Ss 10:00 0:05 /usr/lib/systemd/systemd apache 12345 0.1 1.5 543210 34567 ? S 10:15 0:01 /usr/sbin/httpd -DFOREGROUND

PID: プロセスID(プログラムを強制終了させる kill コマンドを使う時に必要)
%CPU / %MEM: CPUとメモリの使用率
COMMAND: 実行されているコマンド名

パターンB: ps -ef (System V系オプション)

もう一つの定番が -ef です。こちらもすべてのプロセスを表示しますが、親プロセス(PPID)の情報が表示されるため、プロセスの親子関係を調べたい時によく使われます。

# ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:00 ? 00:00:05 /usr/lib/systemd/systemd apache 12345 12344 0 10:15 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND

PPID: 親プロセスのID

【結論】どちらを使うべきか?

CPUやメモリの使用率も見たいなら ps aux を、プロセスの親子関係(誰がどのプログラムを起動したか)を追いたいなら ps -ef を使うのが現場のセオリーです。

2. grepと組み合わせて特定のプロセスを探す(必須テクニック)

ps aux をそのまま実行すると、何百行ものプロセスが画面を埋め尽くしてしまい、目当てのプログラムを見つけることができません。
パイプ(|)を使って grep コマンドに渡し、特定のプロセスだけを抽出するのが実務での基本動作です。

Webサーバー(nginx)が動いているか確認する

# ps aux | grep nginx root 1234 0.0 0.0 56789 1234 ? Ss 10:00 0:00 nginx: master process nginx 1235 0.0 0.1 56800 2345 ? S 10:00 0:00 nginx: worker process root 9999 0.0 0.0 112233 999 pts/0 S+ 11:00 0:00 grep --color=auto nginx

【小技】grep自身のプロセスを除外する(grep -v grep)

上記の実行結果を見ると、一番下に grep nginx という検索コマンド自体のプロセスも混ざって表示されてしまいます。
これを消して純粋な目的のプロセスだけを表示するには、さらにパイプを繋いで grep -v grep(grepという文字列を除外する)を追加します。

# ps aux | grep nginx | grep -v grep root 1234 0.0 0.0 56789 1234 ? Ss 10:00 0:00 nginx: master process nginx 1235 0.0 0.1 56800 2345 ? S 10:00 0:00 nginx: worker process

PIDだけをすばやく取得する(pgrep)

「プロセスが動いているかだけ確認したい」「PIDだけ取り出して kill に渡したい」という場合は、pgrep(プロセスグレップ)コマンドが便利です。ps aux | grep xxx | grep -v grep という長いパイプを1コマンドで代替できます。

# nginx のPIDだけを表示する # pgrep nginx 1234 1235 # PIDを使ってプロセスを停止する場合 # kill 1234

3. CPUやメモリを大量に消費しているプロセスを特定する

「サーバーが重い!」というアラートが鳴った時、どのプロセスが悪さをしているのかを一瞬で見つけ出すオプションです。

メモリ使用量(%MEM)が多い順に並び替える

--sort オプションを使います。マイナス記号(-)をつけると大きい順(降順)になります。

# ps aux --sort -%mem

上位数件だけ見たい場合は head コマンドを繋ぎます。

# ps aux --sort -%mem | head -n 5

CPU使用率(%CPU)が多い順に並び替える

# ps aux --sort -%cpu | head -n 5

本記事のまとめ

やりたいこと コマンド
すべてのプロセスを詳細に表示(リソース確認) ps aux
すべてのプロセスを詳細に表示(親子関係確認) ps -ef
特定のプロセス(例: nginx)が動いているか探す ps aux | grep nginx
grep自身を除外してプロセスを表示する ps aux | grep nginx | grep -v grep
プロセスのPIDだけをすばやく取得する pgrep nginx
メモリ使用量が多い順に並び替える ps aux --sort -%mem | head -n 5
CPU使用率が高い順に並び替える ps aux --sort -%cpu | head -n 5

重いプロセスを放置して、サーバーをダウンさせていませんか?

Linuxのプロセス管理やリソース監視の基本を知らないまま運用していると、異常なプログラムの暴走に気づけず、突然のシステムダウンという大惨事を招きます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・pstree
・chsh
・finger
・du
・uname

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る