本文へスキップ
BecomeCoder

サーバーコース · 第2章 サービスとプロセス · レッスン6

ps ― 動いているプロセスを見る

ブラウザで完結

導入

「サーバーで今、何が動いている?」——それを見せてくれるのが ps(process status)です。前のレッスンで学んだプロセスの一覧を、実際に表示します。Web サーバーやデータベースがちゃんと起動しているか、暴走しているプロセスはないか。運用の調査は、たいていここから始まります。

説明

引数なしの ps は、今の端末で動いているプロセスだけ を簡潔に出します(自分のシェルと ps 自身くらい)。

ps

サーバー全体を見たいときは ps aux(BSD 形式)が定番です。ユーザー・CPUメモリ・状態まで、すべてのプロセス を詳しく並べます。

ps aux

ps -ef は親子関係(PPID)が見える UNIX 形式の表示です。前のレッスンで見たツリー構造が、PPID(親のPID)の列で読み取れます。

flowchart TD
    init["/sbin/init<br/>PID 1"] --> sshd["sshd<br/>PID 420"]
    init --> pg["postgres<br/>PID 512"]
    init --> nginx["nginx worker<br/>PID 640"]
    sshd --> bash["-bash<br/>PID 1024"]
    bash --> ps["ps<br/>PID 1180"]

一覧は長くなりがちなので、実務では grep と組み合わせて 目的のプロセスだけ を探すのが定番です。「nginx は動いてる?」を確かめる、いちばんよく使う形です。

ps aux | grep nginx

ps aux を眺めると、user が起動した python3 train.pyCPU をほぼ100% 食っている(暴走している)のが見つかります。左の PID 列の番号を控えておきましょう——次のレッスンで、これを止めます。「暴走プロセスを見つける→番号を控える→対処する」が調査の基本の流れです。

やってみよう

ps で今の端末のプロセスだけが出ることを見て、ps aux に変えると postgresnginx などサーバー全体のプロセスまで一気に並ぶことを確かめましょう。ps -ef では PPID の列が増え、親子関係が読めます。最後に ps aux | grep nginx で、目的のプロセスだけを絞り込む定番を試してください。

演習

サーバーで動いている全プロセスを、ユーザーやCPU・メモリ付きの詳しい形(BSD 形式)で一覧してください。

ヒント1を見る

全プロセスを詳しく出すのは aux です(ハイフンなし)。

ヒント2を見る

ps aux

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。