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コマンドについてまとめました!

【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
猫たちはそのへんで転がっています。

参考資料



【2026-08-15 追記ぶんの出典】
- ps(1) — Linux manual page(man7.org):オプションの3系統、
-e/-f/e/fの定義、ps -auxの注意書き、C列の意味 - ps — The Open Group Base Specifications Issue 7:
-eと-fがPOSIX側の定義であること