Macでどのプロセスが動いているかを把握することは、パフォーマンスの問題を解決したり、不審なアプリを追跡したり、システムが裏側で何をしているかを理解するために不可欠です。GUIツールでもコマンドラインでも、macOSには全体像を把握するための手段が複数用意されています。
結論から言うと
/Applications/Utilities/にあるActivity Monitorを開けば、実行中の全プロセスを視覚的にすぐ確認できます。ターミナルのps、top、lsofコマンドを使えば、スクリプト化可能な詳細出力が得られます。プロセスツリー、環境変数、短命プロセスのキャプチャなどの高度な検査には、**ProcXray**が便利です。
方法1:Activity Monitor
Activity MonitorはApple標準搭載のプロセスビューアです。すべての実行中プロセスについて、CPU、メモリ、エネルギー、ディスク、ネットワークの使用状況を表示します。
Activity Monitorの開き方
- Finderを開きます。
- アプリケーション > ユーティリティに移動します。
- Activity Monitorをダブルクリックします。
または、Cmd + SpaceでSpotlightを開き、「Activity Monitor」と入力してEnterを押します。
すべてのプロセスを表示する
デフォルトでは、Activity Monitorは自分のユーザーアカウントが所有するプロセスのみ表示します。すべてを表示するには:
- メニューバーの表示メニューをクリックします。
- すべてのプロセスを選択します。
これで、システムデーモンやバックグラウンドサービスを含む、Mac上で実行中のすべてのプロセスが表示されます。
ソートとフィルタリング
- 任意のカラムヘッダ(CPU、メモリ、PID)をクリックすると、その指標でソートできます。
- 右上の検索フィールドでプロセス名をフィルタリングできます。
- CPU、メモリ、エネルギー、ディスク、ネットワークのタブを切り替えることで、異なるリソースビューを確認できます。
制限事項
Activity Monitorは簡単な確認には適していますが、見えない部分があります:
- プロセスツリーがない。 フラットリストのみで、親子関係が表示されません。アプリがヘルパープロセスを生成しても、どのプロセスがどのプロセスを起動したかを判別できません。
- 環境変数が見えない。 プロセスが起動された際の環境変数を確認できません。
- 短命プロセスが見逃される。 更新間隔の間に起動して終了するプロセスは表示されません。
- 正規表現検索がない。 検索フィールドは単純なテキストマッチのみです。
方法2:ターミナルコマンド
ターミナルを使えば、より強力で柔軟な操作が可能です。実行中のプロセスを確認するのに最も役立つコマンドを紹介します。
ps — プロセスの一覧表示
psコマンドは、現在のプロセスのスナップショットを出力します。
# すべての実行中プロセスを詳細情報付きで一覧表示
ps aux
各行には、ユーザー、PID、CPU使用率、メモリ使用率、開始時刻、完全なコマンドが表示されます。
特定のプロセスを名前で検索するには:
# "Safari"に一致するすべてのプロセスを検索
ps aux | grep Safari
完全なコマンドライン引数を表示するには(スクリプト作成時に便利):
# 特定のPIDの完全なコマンドを表示
ps -p 1234 -o pid,command
top — リアルタイムプロセスモニター
topコマンドは、実行中のプロセスをリアルタイムで継続的に更新して表示します。
# CPU使用率順にソートしてtopを起動
top -o cpu
qを押すと終了します。topの実行中にoを押してカラム名を入力すると、ソート順を変更できます。
インタラクティブモードに入らずにワンショットのスナップショットを表示するには:
# CPU上位10プロセスを表示して終了
top -l 1 -n 10 -o cpu
lsof — オープンファイルと接続の一覧
すべてのプロセスは、ファイル、ソケット、システムリソースをオープンしています。lsofコマンドはそれらを表示します。
# 特定のプロセスのすべてのオープンファイルを表示
lsof -p 1234
# 特定のポートを使用しているプロセスを検索
lsof -i :8080
# すべてのネットワーク接続を一覧表示
lsof -i
コマンドの組み合わせ
これらのコマンドをチェインして、的を絞った調査が可能です:
# プロセスのPIDを見つけて、そのオープンファイルを一度に表示
lsof -p $(pgrep -f "node server.js")
制限事項
ターミナルコマンドは強力ですが、トレードオフがあります:
- 出力が膨大になりがちです。
lsofは1プロセスあたり数千行を出力することもあります。 psは静的なスナップショットであり、読んでいる間に短命プロセスはすでに終了している可能性があります。ps、top、lsofのデータを横断的に照合するには手作業が必要です。- 追加のフォーマット処理なしでは、視覚的なプロセス階層を表示できません。
方法3:ProcXray
ProcXrayは、GUIの利便性と、Activity Monitorやターミナルコマンドを超える深い分析能力を兼ね備えたネイティブmacOSアプリです。
ProcXrayの強み
- プロセスツリー表示。 フラットリストと、親子関係を示すライブ階層ツリーを切り替え可能。どのアプリやスクリプトがプロセスを生成したかを即座に確認できます。
- 環境変数。 任意のプロセスをクリックするだけで、起動時のすべての環境変数を確認可能。検索もでき、JSONとしてコピーもできます。
- 短命プロセスのキャプチャ。 新規スポーンされたプロセスは緑色、最近終了したプロセスは赤色で保持されます。Activity Monitorや
psでは見逃される一時的なプロセスもキャプチャされます。 - リアルタイム正規表現検索。 プロセス名、PID、コマンドライン引数、パス全体を対象に、正規表現パターンでフィルタリングできます。
- コード署名の検証。 各プロセスが署名済みかどうか、誰が署名したか、どのentitlementsを保持しているかを一目で確認できます。
ProcXrayは、プロセスが実行中であることだけでなく、なぜ実行中なのかを調査する必要がある場合に特に有用です。
各方法の使い分け
| タスク | Activity Monitor | ターミナル | ProcXray |
|---|---|---|---|
| CPU/メモリの簡易チェック | 最適 | 良い | 良い |
| すべての実行中プロセスを表示 | 良い | 最適 | 最適 |
| 名前でプロセスを検索 | 良い | 良い | 最適 |
| プロセスツリー(親子関係)の表示 | 不可 | 限定的 | 最適 |
| 環境変数の確認 | 不可 | 手間がかかる | 最適 |
| 短命プロセスの捕捉 | 不可 | 不可 | 最適 |
| スクリプト化・自動化 | 不可 | 最適 | 不可 |
| コード署名の確認 | 不可 | 手動 | 最適 |
FAQ
Macでは通常どのくらいのプロセスが動いていますか?
一般的なMacでは、常時300〜500のプロセスが実行されており、その大半はシステムデーモンやバックグラウンドサービスです。これは正常な状態です。異常に多い数や見慣れないプロセス名を発見した場合は、ps auxやProcXrayで調査して正体を確認しましょう。
何もインストールせずに実行中のプロセスを確認できますか?
はい。Activity Monitorはすべてのmacに標準搭載されており、psやtopなどのターミナルコマンドもすぐに使えます。基本的なニーズはこれらでカバーできます。ProcXrayのようなサードパーティツールは、より深い検査機能が必要な場合に価値を発揮します。
Macの動作を遅くしているプロセスを見つけて停止するには?
- Activity Monitorを開き、CPUタブをクリックします。
- % CPUで並べ替えます(カラムヘッダをクリック)。
- 最もリソースを消費しているプロセスを特定します。
- 選択して、ツールバーのXボタンをクリックして終了させます。
終了を拒否するプロセスの場合は、ターミナルでkill -9 <PID>を使用します。<PID>はActivity Monitorまたはps auxで表示されるプロセスIDに置き換えてください。
出典・参考文献
ProcXrayをダウンロード → — 無料、macOS Sonoma以降対応。