ps コマンドの使い方:Linux でプロセス一覧を確認・絞り込む方法

スポンサーリンク

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 が使えないため tophtop を使います。

# 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 まとめ」も参照してください。