このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:プロセスを表示する:psコマンド

psコマンド
コンピュータ上で動作しているプログラムは、プロセスと呼ばれる形で管理されています。Linuxでは、複数のプログラムを同時に実行できるマルチタスク機能を持っており、ユーザーは効率的に作業を進めることができます。ここでは、Linuxでプロセスを確認・管理するための基本的なコマンドであるpsコマンドについて解説します。

プロセスの概要
- プロセス:実行中のプログラムのこと。ディスク上の実行ファイルがメモリに読み込まれ、CPUによって実行されている状態です。
- プロセスID (PID):各プロセスには一意の識別番号であるPIDが割り当てられています。この番号を使用してプロセスを特定・操作します。
- 実効ユーザー:プロセスには所有者(実効ユーザー)が設定されており、ファイルの所有者と同様にアクセス権限が管理されています。他のユーザーのプロセスを勝手に操作することはできません。
同じコマンドから実行されたプロセスであっても、それぞれ独立したメモリ領域を持ち、データが混ざることはありません。これは、Linuxカーネルが各プロセスを適切に管理しているためです。
psコマンド:プロセスの表示
psコマンドは、現在動作しているプロセスの情報を表示するためのコマンドです。引数なしで実行すると、現在のターミナルで実行しているプロセスのみが表示されます。
基本的な使い方
$ ps出力結果
user01@ubuntu:~$ ps
PID TTY TIME CMD
3970 pts/0 00:00:00 bash
10964 pts/0 00:00:00 ps- PID:プロセスID
- TTY:端末の種類
- TIME:プロセスが使用したCPU時間
- CMD:実行しているコマンド名
この例では、以下の2つのプロセスが表示されています。
- bash(PID: 3970):現在のシェル
- ps(PID: 10964):実行した
psコマンド
複数の同一プロセスの実行例
同じコマンドを複数回実行すると、それぞれ別のプロセスとして動作します。
例:xeyesアプリケーションを2つ起動
以下のコマンドを順に実行します。

user01@ubuntu:~$ xeyes &
[1] 11077
user01@ubuntu:~$ xeyes &
[2] 11078
user01@ubuntu:~$ ps
PID TTY TIME CMD
11069 pts/0 00:00:00 bash
11077 pts/0 00:00:00 xeyes
11078 pts/0 00:00:00 xeyes
11088 pts/0 00:00:00 ps- xeyes(PID: 11077、11078):同じ
xeyesプログラムを2つ起動していますが、プロセスIDが異なるため別々のプロセスとして認識されます。
プロセスの終了
killコマンドを使用して、プロセスIDを指定してプロセスを終了させます。
user01@ubuntu:~$ kill 11077
user01@ubuntu:~$ kill 11078現在のターミナル以外のプロセスも表示する
例:xオプション
他のターミナルで実行しているプロセスや、バックグラウンドで動作しているデーモンプロセスを表示するには、xオプションを使用します。
user01@ubuntu:~$ ps x例:fオプション
さらに、プロセスの親子関係を視覚的に表示するために、fオプションを組み合わせます。
$ ps xfプロセスの親子関係の表示
GUI環境で2つのターミナルを起動し、1つ目のターミナルでxeyesを起動した状態で、以下のコマンドを実行します。

user01@ubuntu:~$ xeyes &
[1] 11179
user01@ubuntu:~$ ps xf出力例
PID TTY STAT TIME COMMAND
...(省略)...
11132 ? Ssl 0:02 \_ /usr/libexec/gnome-terminal-server
11141 pts/0 Ss 0:00 \_ bash
11179 pts/0 S 0:00 \_ xeyes
11188 pts/0 R+ 0:00 \_ ps xf
11159 pts/1 Ss+ 0:00 \_ bash出力内容の解説
- 11132(
/usr/libexec/gnome-terminal-server)
GNOMEターミナルのサーバープロセス。親プロセスとして動作しています。 - 11141(
bash)
ターミナル上で動作しているシェル。gnome-terminal-serverの子プロセスです。 - 11179(
xeyes)
シェルから起動されたxeyesプロセス。bashの子プロセスです。 - 11188(
ps xf)
現在実行しているps xfコマンド。bashの子プロセスです。 - 11159(
bash)
2つ目のターミナルで動作しているシェル。別のターミナル(pts/1)なので、pts/0のプロセスツリーとは別になっています。
ツリー状の表示では、「 \_ 」やインデントで親子関係が示されています。インデントが深いほど、親プロセスから派生した子プロセスであることを示します。
すべてのプロセスの表示
システム全体で動作しているすべてのプロセスを表示するには、aオプションとxオプションを組み合わせて使用します。
例:aオプションとxオプション
$ ps ax例:aオプションとxオプションとuオプション
さらに詳細な情報を含めて表示するには、uオプションを追加します。
$ ps auxaオプション:すべてのユーザーのプロセスを表示xオプション:制御端末を持たないプロセスも表示(デーモンなど)uオプション:詳細情報(ユーザー名、CPU使用率、メモリ使用率など)を表示
よく使われるオプション
psコマンドには多くのオプションがありますが、以下の組み合わせがよく使われます。
| オプション | 意味 |
|---|---|
x | 現在のユーザーが実行しているすべてのプロセスを表示 |
ux | 現在のユーザーが実行しているすべてのプロセスを詳細情報付きで表示 |
ax | すべてのユーザーのプロセスを表示 |
aux | すべてのユーザーのプロセスを詳細情報付きで表示 |
auxwww | auxオプションに加え、長いコマンドラインも右端で切れずにすべて表示 |
補足
www:コマンドラインが長くターミナルの右端で切れてしまう場合に、表示幅を制限せずにすべて表示します。
例:長いコマンドラインも右端で切れずにすべて表示
$ ps auxwwwpsコマンドの詳細なオプションについては、以下のコマンドでマニュアルを参照してください。
$ man psまとめ
- プロセスは実行中のプログラムであり、
psコマンドを使用して確認できます。 psコマンドは、オプションを組み合わせることで表示内容を柔軟にカスタマイズできます。- プロセスID(PID)を使用して、プロセスを特定・操作できます。
- プロセスの親子関係を理解することで、システムの動作状況を把握できます。
- よく使われる
psコマンドのオプションを覚えておくと、効率的にプロセス管理ができます。
プロセスの状態を把握することは、システム管理やトラブルシューティングにおいて非常に重要です。psコマンドを活用して、現在動作しているプロセスを適切に管理しましょう。
