ps aux コマンド情報まとめ
LinuxやmacOSのコマンド、 ps aux についてオプションの意味、ps -ef との違い、AIエージェントが実行しようとした場合の危険性について紹介しています。
目次
ps auxとは
ps(Process Status)は、現在実行中のプロセスの情報を表示するコマンドです。そこに aux というオプションを組み合わせることで、システム上のすべてのプロセスを詳細に一覧表示できます。
オプション「aux」の意味
| オプション | 意味 |
|---|---|
a | 端末(TTY)に紐づくすべてのユーザーのプロセスを表示 |
u | ユーザー名やCPU・メモリ使用率などの詳細情報を表示 |
x | 端末に紐づかないプロセス(デーモンなど)も表示 |
「a」「u」「x」の3つのオプションを組み合わせることで、すべてのプロセスを確認できます。
aux はBSD形式のオプションで、ハイフンなしで使います。
POSIX形式の ps -ef もほぼ同じ情報を表示しますが、出力カラムが異なります。
ps auxにて出力されるカラム
実際に ps aux を実行すると、次のような出力が得られます。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 16952 1120 ? Ss Jun01 0:01 /sbin/init
www-data 872 0.3 1.2 256812 12340 ? S 10:21 0:15 nginx: worker
alice 1234 2.1 3.5 512000 35600 pts/0 Sl 11:05 1:20 python app.py
各カラムの意味は以下の通りです。
| カラム | 意味 |
|---|---|
USER | プロセスを起動したユーザー名 |
PID | プロセスID(一意の識別番号) |
%CPU | CPU使用率(%) |
%MEM | 物理メモリ使用率(%) |
VSZ | 仮想メモリの使用量(KB) |
RSS | 実際に使用している物理メモリ量(KB) |
TTY | 紐づいている端末(? はデーモンなど端末なし) |
STAT | プロセスの状態(後述) |
START | プロセスの起動時刻または日付 |
TIME | 累積CPU使用時間 |
COMMAND | 実行されているコマンドとその引数 |
STAT(プロセス状態)詳細
STAT カラムはプロセスの現在の状態を示します。
| 記号 | 意味 |
|---|---|
R | Running(実行中または実行待ち) |
S | Sleeping(割り込み可能なスリープ) |
D | Uninterruptible sleep(I/O待ちなど、割り込み不可) |
Z | Zombie(終了済みだが親プロセスが回収していない) |
T | Stopped(シグナルで停止中) |
s | セッションリーダー |
l | マルチスレッドプロセス |
+ | フォアグラウンドプロセス |
< | 高優先度プロセス |
N | 低優先度プロセス |
例えば Ss はスリープ中のセッションリーダー、Sl はマルチスレッドのスリープ中プロセスを意味します。
よく使う組み合わせ
特定のプロセスを絞り込む(grep と組み合わせ)
ps aux | grep nginx
nginx に関連するプロセスだけを表示します。
CPU使用率でソートする
ps aux --sort=-%cpu | head -10
CPU消費が多い上位10プロセスを表示します( --sort オプションはLinux限定)。
メモリ使用率でソートする
ps aux --sort=-%mem | head -10
メモリを多く使っているプロセスを探すときに便利です。
特定ユーザーのプロセスだけ表示
ps aux | grep '^user_name'
指定したユーザーが起動したプロセスのみ表示します。
ps aux と ps -ef の違い
どちらもすべてのプロセスを表示しますが、以下の違いがあります。
| 項目 | ps aux | ps -ef |
|---|---|---|
| 形式 | BSD形式 | POSIX/System V形式 |
| CPU・メモリ表示 | あり(%CPU, %MEM) | なし |
| PPID(親PID)表示 | なし | あり |
| 互換性 | Linux・macOS | Linux・macOS・多くのUnix |
リソース使用率を確認したいなら ps aux、プロセスの親子関係を追いたいなら ps -ef が向いています。
ユースケース
サービスが起動しているか確認する
ps aux | grep ‘[m]ysqld’
[m]ysqld のように書くと、grep 自身がヒットしなくなるテクニックです。
ゾンビプロセスを探す
ps aux | grep 'Z'
ゾンビプロセスが多い場合、親プロセスのバグや設計上の問題が疑われます。
AIエージェントが実行しようとした場合
ps aux コマンドは、現在実行中のプロセスの情報を確認するためのものであり、AIエージェントが実行する場合でも危険性はありません。