こんにちは、たねやつです。
このシリーズでは、Linuxの基本的なコマンドを一つずつ取り上げ、その使い方を具体的な例とともに解説していきます。今回は、現在実行中のプロセスに関する情報を表示するpsコマンドです。
psコマンドとは?
psコマンドは、Process Statusの略で、コマンドを実行した瞬間のシステム上で動作しているプロセスのスナップショットを表示します。どのユーザーがどのプログラムを実行しているか、各プロセスがどれくらいのCPUやメモリを使用しているか、プロセスの状態(実行中、スリープ中など)は何か、といった情報を確認できます。システムの監視やトラブルシューティングの第一歩として使われる、非常に重要なコマンドです。
オプションの形式
psのオプションは歴史的な経緯から3つの形式があります。
1. UNIX形式: -で始まるオプション(例: -e, -f)。
2. BSD形式: -を付けないオプション(例: a, u, x)。
3. GNU long形式: --で始まるオプション(例: --deselect)。
これらは混在して使用できますが、一般的にはps aux (BSD形式)やps -ef (UNIX形式)といった組み合わせがよく使われます。
主なオプション
| オプション(BSD) | オプション(UNIX) | 説明 |
|---|---|---|
a |
-e |
全てのユーザーのプロセスを表示します(端末を持つプロセス)。 |
u |
-f |
詳細な情報を表示します。uはユーザー指向、-fはフルフォーマット。表示項目が異なります。 |
x |
端末を持たないプロセス(デーモンなど)も表示します。 |
具体的な使用例
状況1: 現在のターミナルで実行中のプロセスを確認したい
最もシンプルな使い方です。
ps
PID(プロセスID), TTY(端末), TIME(CPU使用時間), CMD(コマンド名)が表示されます。通常はシェル(bashなど)とpsコマンド自身が表示されます。
状況2: システムで動作している全てのプロセスを詳細に確認したい(BSDスタイル)
システム全体の動作状況を把握するため、全てのプロセスをユーザー名やCPU/メモリ使用率などの詳細情報付きで表示したい場面です。
ps aux
USER, PID, %CPU, %MEM, STAT(状態), START(開始時刻), COMMANDなど、非常に多くの情報が表示されます。grepと組み合わせて特定のプロセスを探すのが一般的です。
状況3: システムで動作している全てのプロセスを詳細に確認したい(UNIXスタイル)
ps auxと同様に、システム全体のプロセスを確認したい場面ですが、親子関係が分かりやすい形式で表示したい場合に使います。
ps -ef
UID(ユーザーID), PID, PPID(親プロセスID), C(CPU使用率), STIME(開始時刻), CMDなどが表示されます。PPIDを見ることで、どのプロセスから起動されたのかという親子関係を追跡しやすくなります。
状況4: 特定のプロセス(例: nginx)が実行されているか確認したい
Webサーバーnginxが正しく動作しているかを確認したい場面です。psの出力は大量なのでgrepで絞り込みます。
ps aux | grep nginx
nginxに関連するプロセスが表示されれば、正常に起動していると判断できます。grep自身のプロセスも表示されることが多いです。
最後に
今回はpsコマンドについて解説しました。システムの「今」の状態を知るための基本的なコマンドです。ps auxやps -efといった決まり文句を覚えておき、そこからgrepで情報を絞り込む、という使い方に慣れるのが第一歩です。より動的な情報をリアルタイムで見たい場合はtopやhtopといったコマンドが便利です。