Linux

psコマンドの見方まとめ|各列の意味とps -efとの違い

psは実行中のプロセスを一覧表示するコマンドです。よく使うps auxの出力を題材に、PID・TTY・STAT・%CPUといった各列の見方をまとめます。ps -ef との違い(UnixオプションとBSDオプションの系統差・PPIDやSTIMEが出ること)は2026年の追記で扱っています。

Linuxコマンドを基礎から学んでる猫だくさんです。
普段なんとなーく使っているLinuxコマンドについて復習しています。
各コマンドを復習していく中で意味を理解していないものが多く、これらのコマンドは一体どうやって覚えたんだろうという疑問がわきました。

今回はpsコマンドについて学んででいきたいと思います!

psコマンドとは

現在Linuxで実行されているプロセスの一覧を表示するコマンドです。
用途としてはLinuxの動作が遅いときなどに原因となるプロセスを探すときに使用します。

プロセスとは?

Linuxで動いているプログラムのことです。
プロセスはコマンドを実行することで生成され、役目を終えると破棄されます。

一方でシェルのプロセスは動いていないと困るので、端末を使用している間はメモリに保持されています。

試しに使ってみましょう

気軽に使えるLinux仮想環境Envaderを使用します。

早速シンプルにpsと打ってみます。

$ psコマンド
    PID TTY          TIME CMD
     36 pts/1    00:00:00 bash
     64 pts/1    00:00:00 ps

自分が現在実行しているプロセスが表示されました。
なんどなくCMD(コマンド)が表示されてるんだなってことがわかります。

psコマンドオプション

もう少し詳細な情報が欲しいですね。
詳しく表示するためにはオプションを指定します。

比較的よく使われる(と思われる)オプションは以下のとおりです。

Option Description
-A 全プロセスを表示する
-a 端末が操作しているプロセス表示
-u 各プロセスのCPUやメモリの使用率を表示
-x 現在実行しているプロセスを表示
-f プロセスをツリー構造で見やすく表示
-p 実行しているプロセスのPIDを指定して表示
-e コマンド名の後に環境情報などの情報を表示
-l プロセスを長いフォーマットで表示する
-F プロセスを完全なフォーマットで表示

これらのオプションを複合して使用することもできます。
ps auxなどはよく使いますね。

$ ps aux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  1.7  0.0  17944  2672 ?        Ss   15:59   0:00 /bin/bash /init.sh
root          12  0.0  0.0  69956  3020 ?        Ss   15:59   0:00 /usr/sbin/sshd
root          13  0.0  0.0 702212  1040 ?        Sl   15:59   0:00 /bin/secret
root          14  0.0  0.0   4220   692 ?        S    15:59   0:00 tail -f
root          18  0.0  0.1  92728  6444 ?        Ss   15:59   0:00 sshd: envader [priv]
envader       24  0.0  0.1  92728  4268 ?        S    15:59   0:00 sshd: envader@pts/0
envader       25  0.0  0.0  19240  3336 pts/0    Ss+  15:59   0:00 -bash
envader       33  0.0  0.0  18808  2860 pts/0    S+   15:59   0:00 tmux new -s main
envader       35  0.0  0.0  27420  3136 ?        Ss   15:59   0:00 tmux new -s main
envader       36  0.0  0.0  19480  3760 pts/1    Ss   15:59   0:00 -bash
envader       47  0.0  0.0  37784  3204 pts/1    R+   15:59   0:00 ps aux

端末が操作しているプロセスと現在実行しているプロセス(デーモン等)についてCPUやメモリの消費率とともに出力されました。

情報の見方

それぞれの項目の意味を表にしてみました。

hedder mean
USER ユーザーの名前
PID プロセスID
%CPU CPU使用率
%MEM 実メモリ使用率
VSZ 仮想分を含めた使用サイズ
RSS 実メモリ上の使用サイズ
TTY 端末名
STAT プロセスの状態表示
START プロセス開始時間
TIME CPU累積使用時間
COMMAND コマンド名

実の所半分も意味がわかっていませんw

さて、見慣れた画面ですがさらにps auxfとfオプションを追加してツリー表示すると更に視認性が良くなります。

$ ps auxf
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  17944  2672 ?        Ss   15:59   0:00 /bin/bash /init.sh
root          12  0.0  0.0  69956  3020 ?        Ss   15:59   0:00 /usr/sbin/sshd
root          48  0.0  0.1  92728  6676 ?        Ss   16:12   0:00  \_ sshd: envader [priv]
envader       54  0.0  0.1  92860  4340 ?        S    16:12   0:00      \_ sshd: envader@pts/0
envader       55  0.0  0.0  19240  3232 pts/0    Ss+  16:12   0:00          \_ -bash
envader       63  0.0  0.0  18808  2816 pts/0    S+   16:12   0:00              \_ tmux attach -t main
root          13  0.0  0.0 702212  1040 ?        Sl   15:59   0:00 /bin/secret=[REDACTED]
root          14  0.0  0.0   4220   692 ?        S    15:59   0:00 tail -f
envader       35  0.0  0.0  27420  3200 ?        Ss   15:59   0:00 tmux new -s main
envader       36  0.0  0.0  19480  3636 pts/1    Ss   15:59   0:00  \_ -bash
envader       75  0.0  0.0  37784  3224 pts/1    R+   16:37   0:00      \_ ps auxf

引用:プロセス管理 ー 1

各コマンドの関係性がわかりやすいですね。

※情報をツリー表示するコマンドとしてpstreeコマンドというものもあります。

これでプロセスの状況を把握してkillしたりすることができます。
killコマンドについてまとめました!

Linux基礎プロセスをkillしたりジョブをbgしたりfgする
killとは穏やかではありませんが、今回killするのはプロセスさんです。プロセスさんはkillされ慣れてるのでさほど心配する必要はありませんよ。サイコパスみたいな文章となりましたが、killコマンドとジョブをフォアグラウンドで実行した...

【2026-08-15 追記】ps -ef はどう違うのか

ここから下は、2022年に書いた上の本文に、2026年8月のterralienが後から足した追記です。当時の本文はそのまま残してあります(間違いも含めて)。この記事に「ps -ef コマンド」で来てくださる方が地味にいるのに、本文がps auxしか扱っていなかったので、その分だけ足します。

結論から言うと、ps auxとps -efは「全プロセスを詳しく見る」という目的が同じで、方言が違うだけです。どちらを覚えても困りません。ただ、方言が違うことを知らないと、ダッシュを1個つけたり外したりしただけで別のコマンドになるので混乱します(わたしがそうでした)。

psのオプションには3つの系統がある

manページの冒頭に、いきなりこう書いてあります。psのオプションには Unix系(ダッシュを付ける)・BSD系(ダッシュを付けない)・GNUロングオプション(ダッシュ2つ) の3種類があり、混ぜて使うこともできる、と。

系統 書き方 例
Unix(POSIX) ダッシュを付ける ps -ef
BSD ダッシュを付けない ps aux
GNUロング ダッシュ2つ ps --forest

つまりps auxのauxはUnixオプションの-a -u -xではなく、BSDオプションのaとuとxなんですね。上の「psコマンドオプション」の表で、わたしはここを取り違えています。表の-eに書いた「コマンド名の後に環境情報などを表示」はダッシュ無しのeの説明で、-fに書いた「ツリー構造で表示」もダッシュ無しのf(forest=森)の説明でした。当時の表は直しませんが、正しくはこうです。

オプション 正しい意味
-e 全プロセスを選択する(-Aと同じ)
-f 詳細フォーマット(full-format)で表示する。コマンドの引数まで出る
e(ダッシュ無し) コマンドの後ろに環境変数を表示する
f(ダッシュ無し) ツリー表示(ASCIIアートのforest)。本文でやったps auxfのfはこっち

なのでps -efは「全プロセスを(-e)、詳細フォーマットで(-f)」という意味になります。manのEXAMPLESにも、標準構文で全プロセスを見る例としてps -e ps -efが、BSD構文の例としてps ax ps axuが並べて書いてあります。同じことを2つの方言で言っているだけ、というのが目で見て分かります。

出力の列はps auxと少し違う

$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD

見出し行はこうなります。上のps auxの見出しと比べると、%CPU・%MEM・VSZ・RSSが消えて、代わりにPPIDとCとSTIMEが増えています。

列 意味 ps auxだと
UID プロセスの所有者 USER(同じもの)
PPID 親プロセスのID 出ない
C CPU使用率。プロセスの生存期間を通した使用率の整数値 %CPU(こちらは小数)
STIME プロセスの開始時刻 START(同じもの)
メモリ関連 出ない(-FにするとSZ・RSSが増えます) %MEM・VSZ・RSS

使い分けとしては、メモリを食っている犯人を探すならps aux、「この妙なプロセスは誰が産んだのか」を辿るならps -ef、くらいの温度感で覚えておけば足ります。PPIDが出るのが-efの一番おいしいところで、本文でやったps auxfのツリー表示と目的はほぼ同じです。木で見るか、親のIDで見るかの違いですね。

ついでに:ps -auxとは書かないほうがいい

manに注意書きがあります。ps -auxは2つの標準を混ぜてしまっている書き方で、推奨されません。POSIX/Unixの解釈だと「端末を持つ全プロセス+xという名前のユーザーが所有するプロセス」を出せ、という意味になるからです。実際にはxというユーザーがまず存在しないので、psが気を利かせて「ps auxのつもりだな」と解釈してくれます。動いてしまうぶん、間違ったまま覚えるやつですね。わたしも長いこと気づかずに打っていました。

——2022年のわたしは、オプションの表をどこかから写して「実の所半分も意味がわかっていませんw」と書いて終わっていたわけですが、4年経って読み返したら写し間違いを含んだまま4年間公開していたことが分かった、という追記でした。理解していないものを表にすると、間違いも一緒に固まるんですよね。

学んだこと

  • psコマンドでプロセスの状態を把握する
  • psコマンドで表示された情報の見方

今のところ表示したからなんじゃいって感じですが、後々多用することになる、ハズw

猫たちはそのへんで転がっています。

参考資料

コース一覧 | エンベーダー
コース一覧に関するページです。Linuxを学べるLinux基礎・応用コースを始めとして、エンジニア必須の知識であるデータベースやセキュリティのコースもあります。
【初心者向け】Linuxのプロセスについて一通りわかる!
プロセスとは、Linuxで動いているプログラムのことだ。このページではLinuxのプロセスについてまとめてご紹介する。Linux初心者の方は参考にしてほしい。
【 ps 】コマンド――実行中のプロセスを一覧表示する
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介してきます。今回は、「ps」コマンドです。

【2026-08-15 追記ぶんの出典】