## はじめに
ps(Process Status)はLinuxで実行中のプロセスを一覧表示するコマンドです。CPUやメモリを大量に消費しているプロセスの調査、特定アプリの動作確認、ゾンビプロセスの検出など、トラブルシューティングの基本ツールです。
歴史的事情から `BSD構文`(オプション先頭に `-` を付けない)と `UNIX構文`(`-` を付ける)の両方が混在しており、`ps aux` と `ps -ef` はその代表例です。
## 症状・背景
ps が必要になる主な場面:
– どのプロセスがCPU/メモリを食っているのか調査したい
– 特定アプリ(nginx, php-fpmなど)が動いているか確認したい
– プロセスのPIDを取得して kill コマンドに渡したい
– 親子関係(プロセスツリー)を把握してリソース消費の原因を追いたい
## 手順・設定方法
### ステップ1: 基本的な使い方
“`bash
# 全プロセスを表示(BSD構文の定番)
ps aux
# 全プロセスを表示(UNIX構文の定番)
ps -ef
# 自分のプロセスのみ
ps
# 列の意味
# USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# STAT: R=実行中 S=スリープ D=待機 Z=ゾンビ T=停止 +=フォアグラウンド
“`
### ステップ2: 絞り込みと表示形式
“`bash
# 特定ユーザーのプロセス
ps -u www-data
# 特定PIDのプロセス
ps -p 1234
# 名前で絞り込み(grepはps自身がヒットするので除外)
ps aux | grep [n]ginx
# 子プロセスツリー表示
ps -ef –forest
ps auxf # BSD構文のツリー
# 表示列を指定
ps -eo pid,user,%cpu,%mem,comm
ps -eo pid,etime,cmd # 経過時間も表示
“`
### ステップ3: 並び替え
“`bash
# CPU使用率の高い順 上位10件
ps aux –sort=-%cpu | head -11
# メモリ使用率の高い順
ps aux –sort=-%mem | head -11
# 開始時刻の古い順
ps -ef –sort=start_time
# 複数キーでソート
ps -eo pid,user,%mem,%cpu –sort=-%mem,-%cpu
“`
### ステップ4: 実践的な使い方
“`bash
# 特定プロセスのPIDだけ取得(pgrepの方が便利)
ps -C nginx -o pid=
pgrep nginx
# ゾンビプロセスの検出
ps aux | awk ‘$8 ~ /Z/ {print $0}’
# 特定アプリの全プロセス(マスター+ワーカー)を確認
ps -ef | grep [p]hp-fpm
# プロセスのスレッド数も表示
ps -eLf | wc -l # 全スレッド数
ps -eLf | grep nginx # nginxのスレッド一覧
# プロセス起動からの経過時間(古いプロセス調査)
ps -eo pid,etime,user,cmd –sort=etime | tail
# Apacheがどれだけメモリを使ってるか合計
ps -C apache2 –no-headers -o rss | awk ‘{sum+=$1} END {print sum/1024 “MB”}’
“`
## 注意事項
– `ps aux` と `ps -ef` は微妙に列が異なる(VSZ/RSS vs SZ/STIME)。スクリプトでは `-eo` で明示推奨
– `grep` を使うときは `[n]ginx` のように1文字を角括弧で囲むと grep 自身がヒットしない
– `RSS`(実メモリ)と `VSZ`(仮想メモリ)の違いは重要。実消費は RSS
– リアルタイム監視には ps より `top` や `htop` の方が適切
– プロセスツリーは `pstree` の方が見やすい場合がある
## まとめ
1. **基本**: `ps aux`(BSD)または `ps -ef`(UNIX)で全プロセス表示
2. **絞り込み**: `-u user` `-p PID` `-C name` で対象を絞れる
3. **並び替え**: `–sort=-%cpu` `-%mem` でリソース消費上位を抽出
4. **ツリー**: `-ef –forest` または `auxf` で親子関係を表示
5. **代替**: PID取得は `pgrep`、ツリーは `pstree` がシンプル
関連記事:
– [topコマンドでシステムリソースを監視する方法](../linux-top-command-monitor/)
– [htopのインストールと使い方](../linux-htop-install-usage/)
– [killとkillallでプロセスを終了する方法](../linux-kill-process/)




