ps コマンドの使い方:Linux でプロセス一覧を確認・絞り込む方法
ps(process status)は実行中のプロセスを一覧表示するコマンドです。どのプロセスが動いているか、CPU やメモリをどれだけ使っているかを確認できます。
基本:よく使う2パターン
# BSD スタイル(macOS・Linux 共通でよく使われる) ps aux # POSIX スタイル(Linux で標準的) ps -ef
どちらも全プロセスを表示しますが、出力の列が少し異なります。ps aux の方が %CPU・%MEM が見えるので実用的です。
出力列の読み方(ps aux)
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 168444 11200 ? Ss May10 0:05 /sbin/init user 1234 2.3 1.5 512000 61440 pts/0 Sl 10:00 0:32 node server.js
| 列 | 意味 |
|---|---|
| USER | プロセスの実行ユーザー |
| PID | プロセスID(kill に使う) |
| %CPU | CPU 使用率 |
| %MEM | メモリ使用率 |
| VSZ | 仮想メモリサイズ(KB) |
| RSS | 実際に使用している物理メモリ(KB) |
| STAT | プロセスの状態 |
| START | 開始時刻 |
| TIME | 累積 CPU 時間 |
| COMMAND | 実行コマンド |
STAT(状態)の主な種類
| STAT | 意味 |
|---|---|
| S | スリープ中(入力待ち) |
| R | 実行中 |
| Z | ゾンビ(終了済みだが親が回収していない) |
| T | 停止中 |
| s | セッションリーダー |
| l | マルチスレッド |
| + | フォアグラウンドプロセス |
特定プロセスを探す
grep と組み合わせて絞り込みます。
# node プロセスを探す ps aux | grep node # nginx を探す ps aux | grep nginx # 自分のプロセスだけ表示 ps aux | grep "^$(whoami)"
user 1234 2.3 1.5 512000 61440 pts/0 Sl 10:00 0:32 node server.js user 5678 0.0 0.0 8192 1024 pts/0 S+ 10:05 0:00 grep node
grep コマンド自身も結果に含まれます。除外したい場合は以下のようにします。
ps aux | grep [n]ode # または ps aux | grep node | grep -v grep
PID だけ取り出す(pgrep)
pgrep を使うと PID だけを取得できます。
# node の PID を取得 pgrep node # プロセス名も合わせて表示 pgrep -l node
CPU・メモリ使用率でソートする
# CPU 使用率の高い順(Linux) ps aux --sort=-%cpu | head -10 # メモリ使用率の高い順(Linux) ps aux --sort=-%mem | head -10
macOS では --sort が使えないため top や htop を使います。
# macOS:CPU 使用率上位を確認 top -l 1 -o cpu | head -20
自分のプロセスだけ確認する
# オプションなし:現在のターミナルセッションのプロセス ps # 自分のすべてのプロセス ps -u $(whoami)
PID を使ってプロセスを終了する
ps で PID を確認して kill に渡します。
# PID を確認 ps aux | grep node # 通常の終了シグナルを送る(SIGTERM) kill 1234 # 強制終了(SIGKILL) kill -9 1234
ポート番号からプロセスを特定したい場合は lsof が便利です。
# ポート 3000 を使っているプロセスの PID を確認 lsof -ti :3000 # そのままパイプして kill kill -9 $(lsof -ti :3000)
macOS と Linux の違い
| 操作 | Linux | macOS |
|---|---|---|
| 全プロセス | ps aux |
ps aux(共通) |
| CPU順ソート | ps aux --sort=-%cpu |
top -l 1 -o cpu |
| スレッド表示 | ps aux -L |
ps -M |
macOS の ps は BSD 版のため、Linux(GNU 版)と一部オプションが異なります。
よく使うコマンドまとめ
| コマンド | 説明 |
|---|---|
ps aux |
全プロセスを一覧表示 |
ps aux | grep プロセス名 |
特定プロセスを検索 |
ps aux | grep [n]ode |
grep 自身を除外して検索 |
pgrep -l プロセス名 |
PID とプロセス名を取得 |
ps aux --sort=-%cpu | head -10 |
CPU 使用率上位10件(Linux) |
ps aux --sort=-%mem | head -10 |
メモリ使用率上位10件(Linux) |
kill PID |
プロセスを終了(SIGTERM) |
kill -9 PID |
プロセスを強制終了(SIGKILL) |
kill -9 $(lsof -ti :3000) |
ポート3000を使うプロセスを強制終了 |
メモリやディスクなどシステム全体のリソース確認は「Linux・Mac のリソース確認コマンド:free・df・uname・lscpu まとめ」も参照してください。