プロセス管理

Linux psコマンド入門|実行中のプロセス情報を確認する

Linux ps プロセス管理

Linux psコマンド入門
実行中のプロセス情報を確認する

psコマンドは、現在実行中のプロセスの情報を表示するコマンドです。プロセスID、CPU使用率、メモリ使用量などを確認してシステムの状態を把握できます。

こんな人向けの記事です

  • 実行中のプロセスを確認したい人
  • CPU・メモリを大量消費しているプロセスを特定したい人
  • 特定のプロセスが動いているか調べたい人

Step 1psコマンドの基本

psコマンドをオプションなしで実行すると、現在のターミナルセッションに紐づくプロセスだけが表示されます。

ターミナル
ps

出力される各列の意味は以下のとおりです。

列名説明
PIDプロセスID(一意の識別番号)
TTY端末デバイス
TIMECPU使用時間
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