Linux psコマンド入門
実行中のプロセス情報を確認する
psコマンドは、現在実行中のプロセスの情報を表示するコマンドです。プロセスID、CPU使用率、メモリ使用量などを確認してシステムの状態を把握できます。
こんな人向けの記事です
- 実行中のプロセスを確認したい人
- CPU・メモリを大量消費しているプロセスを特定したい人
- 特定のプロセスが動いているか調べたい人
Step 1psコマンドの基本
psコマンドをオプションなしで実行すると、現在のターミナルセッションに紐づくプロセスだけが表示されます。
ターミナル
ps
出力される各列の意味は以下のとおりです。
| 列名 | 説明 |
|---|---|
| PID | プロセスID(一意の識別番号) |
| TTY | 端末デバイス |
| TIME | CPU使用時間 |
| CMD | 実行コマンド名 |
Step 2よく使うオプション
psコマンドのオプションにはBSD形式(ハイフンなし)とUNIX形式(ハイフンあり)の2種類があります。
| オプション | 説明 |
|---|---|
ps aux | 全ユーザーの全プロセスを詳細表示(BSD形式) |
ps -ef | 全プロセスをフルフォーマットで表示(UNIX形式) |
ps -u username | 特定ユーザーのプロセスを表示 |
ps -p PID | 特定PIDのプロセスを表示 |
ps --forest | プロセスをツリー表示 |
Step 3全プロセスを表示する
システム全体のプロセスを確認するには ps aux が最もよく使われます。
ターミナル
# 全プロセスを詳細表示(BSD形式)
ps aux
# 全プロセスをフルフォーマット表示(UNIX形式)
ps -ef
aux の各列の意味
- USER:プロセスの実行ユーザー
- %CPU:CPU使用率
- %MEM:メモリ使用率
- VSZ:仮想メモリサイズ
- RSS:実メモリ使用量
- STAT:プロセスの状態(S:スリープ、R:実行中、Z:ゾンビ)
Step 4特定のプロセスを検索する
grepと組み合わせて、特定のプロセスを検索できます。
ターミナル
# nginxのプロセスを検索
ps aux | grep nginx
# grep自身を除外して検索
ps aux | grep [n]ginx
# pgrepで簡潔に検索(PIDのみ表示)
pgrep -a nginx
[n]ginx のテクニック
grep [n]ginx と書くと、grep自身のプロセスが検索結果に含まれなくなります。[n]ginx は正規表現として nginx にマッチしますが、コマンド文字列としては [n]ginx なのでマッチしないためです。
Step 5出力をカスタマイズする
-o オプションで、表示する列を自由に選択できます。
ターミナル
# PID、CPU使用率、メモリ使用率、コマンド名だけを表示
ps -eo pid,%cpu,%mem,comm
# CPU使用率でソート(降順)
ps -eo pid,%cpu,%mem,comm --sort=-%cpu | head -10
# メモリ使用量でソート(降順)
ps -eo pid,%cpu,%mem,comm --sort=-%mem | head -10
Step 6実践的な活用例
日常的なサーバー管理でよく使うpsコマンドのパターンです。
ターミナル
# CPU消費トップ5のプロセス
ps aux --sort=-%cpu | head -6
# メモリ消費トップ5のプロセス
ps aux --sort=-%mem | head -6
# ゾンビプロセスの確認
ps aux | awk '{if(=="Z") print}'
# プロセスツリーで親子関係を確認
ps -ef --forest
# 特定ユーザーのプロセス数をカウント
ps -u www-data --no-headers | wc -l