Linuxのプロセスとは何か
プロセスとは、Linux上で実行中のプログラムです。プロセスには、識別番号であるPID、実行ユーザー、CPU・メモリ使用量、起動コマンドなどの情報があります。終了操作ではPIDを指定するため、対象を誤ると別のアプリケーションやシステム機能に影響するおそれがあります。サービスや他の利用者への影響を確認してから操作しましょう。
実行中のプロセスを確認する
一覧を一度確認するならps、変化を監視するならtopが便利です。プロセス名からPIDを探す場合はpgrepを使えます。
BASH
# プロセス一覧を確認する
ps aux
# CPUやメモリ使用量を対話的に監視する
top
# プロセス名からPIDを探す例
pgrep -a myapp
# 期待される挙動:
# PID、実行ユーザー、使用率、実行コマンドなどを確認できる。
# 表示項目やオプションは環境のmanページで確認する。| 目的 | コマンド | 特徴 |
|---|---|---|
| 一覧を一度に確認する | ps | その時点のプロセス情報を表示する |
| 変化を監視する | top | CPUやメモリ使用量などを更新表示する |
| 名前から探す | pgrep | 条件に一致するPIDを表示する |
終了するプロセスを間違えずに特定する
プロセス名だけで判断せず、PID、実行ユーザー、起動コマンドを組み合わせて確認します。同じ名前のプロセスが複数ある場合は、対象のPIDを慎重に絞り込みます。
システムプロセスや他の利用者のプロセスは、影響範囲を確認せずに終了しないでください。本番環境では、プロセスを直接終了する前に、サービス管理ツールや運用手順を確認することが重要です。
プロセスを通常の手順で終了する
通常はkillで対象PIDへ終了要求を送ります。PID_TO_STOPは、実際に確認したPIDへ置き換えてください。
BASH
# PID_TO_STOPを実際の対象PIDに置き換える
kill PID_TO_STOP
# 終了したかを再確認する
ps -p PID_TO_STOP
# 期待される挙動:
# killの既定シグナルはTERMです。
# 対象が終了した場合、再確認時にプロセス情報が表示されないことがあります。
# 実際の表示や権限要件は環境のman killで確認する。権限エラーになる場合は、対象プロセスの所有者と、自分のユーザーに必要な権限があるかを確認します。管理者権限が必要な場合でも、対象PIDを再確認してから実行してください。
終了しない場合に強制終了を検討する
通常の終了要求で終了しない場合に限り、強制終了を検討します。強制終了では、アプリケーションが終了処理を行う機会が限られるため、未保存データや一時ファイルに影響する可能性があります。
BASH
# 通常終了で終了しない場合だけ、対象PIDを再確認して実行する
kill -KILL PID_TO_STOP
# 関連プロセスやサービスの状態を確認する
ps aux | grep '[m]yapp'
# 期待される挙動:
# 対象プロセスへKILLシグナルを送る。
# 実行後は、関連プロセス、ログ、サービスの状態を確認する。| 観点 | 通常終了 | 強制終了 |
|---|---|---|
| 終了処理の機会 | アプリケーションが処理できる可能性がある | 終了処理を期待できない |
| データへの影響 | 比較的小さいが、アプリケーション次第 | 未保存データや一時ファイルに影響する可能性がある |
| 使う場面 | 最初に試す | 通常終了で終了しない場合に限定する |
プロセスを終了できないときの確認事項
- PIDが変わっていないか、対象プロセスがすでに終了していないかを再確認する。
- 権限エラーの場合は、プロセスの所有者と管理者権限の要否を確認する。
- 終了後に再び起動する場合は、サービス管理ツールや監視ツールによる自動再起動を確認する。
- 親プロセスと子プロセスの関係を確認し、関連サービスへの影響を把握する。