この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-06-12 15:30:20

タイトル: ps プロセスの確認
SEOタイトル: Linuxのpsコマンドの使い方|ps auxとps -ef・プロセス確認の定番

Linuxのpsコマンドは、実行中(稼働中)のプロセスの一覧を表示するためのコマンドである。ある瞬間にどのプログラムが、どのユーザー権限で、どれだけのCPUやメモリを使って動いているかを確認したいときに使う。サーバーの負荷調査や、暴走したプロセスのPID(プロセスID)を調べて停止させる前段としてよく利用される。

この記事の要点
  • ps は実行中プロセスを一覧表示するコマンド。実行した瞬間の「静的なスナップショット」を表示する。
  • 全プロセスを見たいときの定番は ps aux(BSDスタイル)または ps -ef(UNIXスタイル)の2通り。
  • 特定のプロセスだけ探すなら ps aux | grep nginx のように grep と組み合わせる。
  • 常に最新の状態を追いかけたい場合は ps ではなく top / htop が向いている。

 

psコマンドとは

ps は「process status」に由来し、システム上で動作しているプロセスの状態を表示する。標準ではコマンドを実行した端末(ターミナル)に紐づく自分のプロセスだけを表示するため、何も付けずに実行すると結果がごく少ないことが多い。システム全体のプロセスを確認したい場合は、後述のオプションを付けるのが一般的である。

引数なしで実行した例を示す。

$ ps

   PID TTY          TIME CMD
  2451 pts/0    00:00:00 bash
  2480 pts/0    00:00:00 ps

このように、自分が操作している端末上のプロセスだけが表示される。実行中のプロセス全体を把握したいときは、次の「よく使う形」を使う。

 

よく使う形:ps aux と ps -ef

システム上のすべてのプロセスを表示する定番は、次の2つである。表示される情報はほぼ同じだが、オプションの記法(スタイル)が異なる。

# BSDスタイル(オプションにハイフンを付けない)

$ ps aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1 225700  9784 ?        Ss   16:20   0:16 /lib/systemd/systemd --system
root      709  0.0  0.0  70752  6192 ?        Ss   16:20   0:01 /lib/systemd/systemd-logind
www-data 1820  0.0  0.2  57192 11008 ?        S    16:21   0:00 nginx: worker process

# UNIX(System V)スタイル(オプションにハイフンを付ける)

$ ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD
root        1     0  0 16:20 ?         00:00:16 /lib/systemd/systemd --system
root      709     1  0 16:20 ?         00:00:01 /lib/systemd/systemd-logind
www-data 1820  1801  0 16:21 ?         00:00:00 nginx: worker process

aux と -ef の違い

  • 記法のスタイルが違うaux はBSDスタイル(ハイフンなし)、-ef はUNIX(System V)スタイル(ハイフンあり)。Linuxの ps は両方の記法を受け付ける。
  • 表示される列が一部異なるps aux はCPU使用率(%CPU)やメモリ使用率(%MEM)を表示するため負荷の確認に向く。一方 ps -ef は親プロセスID(PPID)を表示するためプロセスの親子関係を追うのに向く
  • どちらも「すべてのプロセスを表示する」という目的は共通している。用途に応じて使い分ければよく、どちらが正しいというものではない。

 

主要なオプション

よく使うオプションをまとめる。BSDスタイルとUNIXスタイルが混在している点に注意する(後述の「落とし穴」参照)。

オプション スタイル 意味
aux BSD 全ユーザーの全プロセスを、ユーザー名や負荷情報付きで表示する。最もよく使われる形。
-ef UNIX 全プロセスをフルフォーマット(親プロセスID付き)で表示する。
-e UNIX すべてのプロセスを表示する(-A とほぼ同義)。
-f UNIX フルフォーマットで表示する(PPIDやコマンドの引数まで表示)。
--sort GNU 指定した列で並べ替える。例: --sort=-%cpu でCPU使用率の高い順。先頭の - は降順を表す。
-p UNIX 指定したPIDのプロセスだけを表示する。例: ps -p 1820
-u UNIX 指定したユーザーのプロセスを表示する。例: ps -u www-data(BSDスタイルの u 単体は意味が異なる点に注意)

CPU使用率の高い順に並べ替える例を示す。負荷の原因となっているプロセスを探すときに便利である。

$ ps aux --sort=-%cpu | head -n 5

 

出力される主な列の意味

ps auxps -ef で表示される代表的な列の意味を整理する。

意味
USER / UID そのプロセスを実行しているユーザー。
PID プロセスID。プロセスを一意に識別する番号。kill などで対象を指定するときに使う。
PPID 親プロセスID。そのプロセスを起動した親プロセスのPID(ps -ef などで表示)。
%CPU / %MEM CPU使用率・物理メモリ使用率の概算(%)。
STAT プロセスの状態。R=実行中/実行可能、S=スリープ(待機)、D=割り込み不可のスリープ、Z=ゾンビ、T=停止中 など。
COMMAND / CMD 実行されているコマンド名。-f を付けると引数まで表示される。

このほか、VSZ(仮想メモリサイズ)、RSS(実際に使用している物理メモリサイズ)、TTY(紐づく端末。? は端末を持たないプロセス)、START / STIME(起動時刻)、TIME(消費したCPU時間)などの列がある。

 

grepと組み合わせて特定のプロセスを探す

全プロセスを表示すると行数が多くなるため、特定のプロセスだけを探したいときは grep と組み合わせるのが定番である。たとえばnginxのプロセスを探す場合は次のようにする。

$ ps aux | grep nginx

root     1801  0.0  0.1  55600  5120 ?        Ss   16:21   0:00 nginx: master process
www-data 1820  0.0  0.2  57192 11008 ?        S    16:21   0:00 nginx: worker process
tarou   2502  0.0  0.0   6432   896 pts/0    S+   16:45   0:00 grep --color=auto nginx

パイプ |ps の出力を grep に渡し、「nginx」という文字を含む行だけを抜き出している。なお最後の行のように、grep自身のプロセスも結果に出てしまう点には注意が必要である(対処法は後述)。

 

topコマンドとの違い

ps とよく比較されるのが top である。両者の最大の違いは、更新されるかどうかである。

  ps top
表示の性質 実行した瞬間の静的なスナップショット 一定間隔で自動更新される動的な表示
用途 その時点の一覧をファイルやgrepへ渡す処理に向く 負荷の推移をリアルタイムに監視するのに向く
終了 実行後すぐコマンドが終了しプロンプトに戻る 画面に常駐し、q キーで終了する

「今この瞬間のプロセス一覧を取得して別のコマンドに渡したい」場合は ps、「負荷を継続的に見張りたい」場合は top(より見やすい htop もある)を使う、と覚えておくとよい。

 

落とし穴・注意点

つまずきやすいポイント
  • BSDスタイルとUNIXスタイルの混在aux(ハイフンなし)と -ef(ハイフンあり)では記法が異なる。ps -aux のようにBSDオプションへ誤ってハイフンを付けると、環境によって解釈が変わり警告が出ることがある。意図どおりに動かないときは、まず記法のスタイルを確認する。
  • grep自身が結果に出るps aux | grep nginx では、検索に使った grep のプロセス自身もヒットしてしまう。これを除外したい場合は ps aux | grep [n]ginx のように先頭文字を角括弧で囲むか、pgrep nginx を使うとよい。
  • 何も付けないと結果が少ない: 引数なしの ps は自分の端末のプロセスしか表示しない。システム全体を見たいときは aux-ef を付ける。

 

よくある質問(FAQ)

Q. ps aux と ps -ef はどちらを使えばよいですか?

A. どちらでも全プロセスを確認できる。CPUやメモリの使用率を見たいなら ps aux、プロセスの親子関係(PPID)を追いたいなら ps -ef が向いている。表示される情報の違いで選べばよく、優劣はない。

Q. 特定の名前のプロセスのPIDだけを素早く知りたいです。

A. pgrep コマンドが手軽である。たとえば pgrep nginx でnginx関連プロセスのPIDだけが一覧表示される。ps aux | grep nginx と違い、grep自身が混ざらない利点がある。

Q. CPUやメモリを多く使っているプロセスを上位から見るには?

A. ps aux --sort=-%cpu | head でCPU使用率の高い順、ps aux --sort=-%mem | head でメモリ使用率の高い順に上位を確認できる。リアルタイムに監視したい場合は top を使うとよい。