ps・kill・top

にメンテナンス済み

Linux では、動作中のプログラムは「プロセス」として管理されます。 ps でプロセスを一覧表示し、top でリアルタイムに監視し、kill で停止させます。 サーバーの問題対応やアプリケーションの動作確認でよく使います。

ブラウザでコマンドを試す

以下の端末では whoamiecho など基本的なコマンドを試せます。 pstop はサーバー上のプロセスを扱うため、このシミュレーターでは実行できません。 実際のコマンドは以下のセクションで確認してください。

基本コマンドを試す

シミュレーター

whoami でユーザー名を確認したり、date で現在時刻を表示したりできます。ps や kill は実際のLinux環境でお試しください。

ターミナルを読み込み中...

psでプロセスを一覧表示する

ps は、現在動作しているプロセスの一覧を表示します。

現在のシェルのプロセスを表示
ps

引数なしでは、自分が起動したプロセスだけが表示されます。 すべてのユーザーのプロセスを表示するには、aux オプションを組み合わせます。

すべてのプロセスを表示
ps aux

実行結果の例です。

実行結果
USER       PID %CPU %MEM    VSZ   RSS STAT COMMAND
root         1  0.0  0.1  22560  5120 Ss   /sbin/init
appuser   1234  1.2  5.8 820000 60000 Sl   node server.js

各列の意味は次のとおりです。

意味
USERプロセスを実行しているユーザー
PIDプロセスID(操作時に使う番号)
%CPUCPU 使用率
%MEMメモリ使用率
STATプロセスの状態
COMMAND実行中のコマンド

STAT の代表的な値は次のとおりです。

状態意味
Sスリープ中(入力待ち)
R実行中(CPU を使用中)
Zゾンビ(終了したが後片付けが済んでいない)
T停止中

プロセスを絞り込む

ps aux の出力を grep とパイプで組み合わせると、特定のプロセスだけを探せます。

特定のプロセスを探す
ps aux | grep "node"

アプリケーション名や PID を調べるときによく使います。

topでリアルタイムに監視する

top は、CPU やメモリの使用率が高いプロセスをリアルタイムで一覧表示します。

topを起動する
top

起動すると、数秒ごとに更新される一覧が表示されます。 終了するには q を押します。

top の中でよく使うキー操作は次のとおりです。

キー操作
q終了する
kプロセスを終了させる(PID を入力)
PCPU 使用率の高い順に並べる
Mメモリ使用率の高い順に並べる
1CPU ごとの使用率を表示する

top の代わりに htop が使える環境では、色付きで見やすく操作もしやすくなります。

htopを起動する(インストール済みの場合)
htop

killでプロセスを終了させる

kill は、プロセスに「シグナル」を送るコマンドです。 デフォルトでは SIGTERM(正常終了の要求)を送ります。

プロセスを終了させる
kill 1234

1234 は終了させたいプロセスの PID です。 ps aux | grep プロセス名 で PID を確認してから実行します。

強制終了する

SIGTERM を受け取っても終了しないプロセスには、強制終了のシグナル SIGKILL を送ります。

強制終了する
kill -9 1234

-9SIGKILL のシグナル番号です。 プロセスは後片付けをせずに即座に終了します。 データが壊れる可能性があるため、通常の kill で終了しない場合の最終手段として使います。

プロセス名で終了させる

pkill を使うと、PID ではなくプロセス名でシグナルを送れます。

プロセス名で終了させる
pkill -f "node server.js"

killall は同じ名前のプロセスをまとめて終了させます。

同名のプロセスをすべて終了させる
killall nginx

killの前に確認する

kill を実行する前に、対象の PID が正しいかを必ず確認してください。 kill -0 PID を使うと、シグナルを送らずにプロセスの存在だけを確認できます。

プロセスが存在するか確認する
kill -0 1234 && echo "プロセスが存在します" || echo "プロセスは存在しません"

プロセス管理の典型的な流れ

サーバー上でアプリケーションが応答しなくなった場合の手順例です。

①動作中のプロセスを確認する
ps aux | grep "myapp"
②top
top
③対象の
kill 5678
④終了しない場合は強制終了する
kill -9 5678
⑤プロセスが消えたか確認する
ps aux | grep "myapp"

便利な組み合わせ

CPU 使用率の高いプロセスを上位 5 件表示する

CPU
ps aux --sort=-%cpu | head -6

メモリ使用量の多いプロセスを探す

メモリ使用量トップ5
ps aux --sort=-%mem | head -6

特定のポートを使っているプロセスを調べる

ポート3000を使っているプロセスのPIDを確認する
lsof -i :3000

lsof -i :ポート番号 は、特定ポートを占有しているプロセスの PID を調べるときに便利です。

まとめ

  • ps aux: すべてのプロセスを一覧表示する
  • ps aux | grep 名前: 特定のプロセスを探す
  • top: CPU・メモリの使用状況をリアルタイムで監視する
  • kill PID: プロセスに正常終了を要求する
  • kill -9 PID: プロセスを強制終了する
  • pkill -f 名前: プロセス名で終了させる

プロセス管理はサーバー運用の基本です。 問題が起きたときに慌てず対応できるよう、pstopkill の流れを覚えておきましょう。

#Linux #Bash #ps #kill #top #process