どーも!marusukeです!
この記事では、Linuxでプロセスを確認・監視・終了・優先度変更するための主要コマンドをまとめて解説します。
この記事で分かることは次のとおりです。
- 実行中プロセスを確認・監視するコマンド(ps・top・pstree・pgrep)
- プロセスを終了させるコマンド(kill・pkill・killall)
- プロセスの実行優先度を操作するコマンド(nice・renice)
- それぞれのコマンドの使い分けと注意点
注意
kill -9やkillallなどの強制終了系コマンドは、保存していないデータの消失やシステム不安定化につながる可能性があります。まずは通常終了(SIGTERM)を試し、それでも終了しない場合の最終手段として使いましょう。
プロセス管理系コマンドの全体像
プロセス管理コマンドは、大きく3つの役割に分かれます。
| 役割 | コマンド | 用途 |
|---|---|---|
| 確認・監視 | ps | 実行中プロセスのスナップショットを表示 |
| 確認・監視 | top | プロセスとリソース使用状況をリアルタイム監視 |
| 確認・監視 | pstree | プロセスの親子関係をツリー表示 |
| 確認・監視 | pgrep | プロセス名からPIDを検索 |
| 終了 | kill | PIDを指定してシグナルを送信(終了など) |
| 終了 | pkill | プロセス名を指定してシグナルを送信 |
| 終了 | killall | プロセス名でまとめて終了 |
| 優先度変更 | nice | コマンド実行時の優先度(nice値)を指定 |
| 優先度変更 | renice | 実行中プロセスの優先度(nice値)を変更 |
基本的な流れは「ps/top/pgrep/pstreeでプロセスを確認 → 必要ならkill/pkill/killallで終了、またはnice/reniceで優先度を調整」という流れになります。
確認・監視系:ps・top・pstree・pgrep
ps
psコマンドは、実行中のプロセスをスナップショットとして表示します。
ps [オプション]
出力の主な列は次の通りです。
| 列 | 内容 |
|---|---|
| PID | プロセスID |
| TTY | 実行している端末 |
| TIME | CPU使用時間 |
| CMD | 実行されたコマンド |
psの主なオプション
| オプション | 説明 |
|---|---|
-e, -A | すべてのプロセスを表示 |
-f | フルフォーマットで表示 |
-l | ロングフォーマットで表示 |
-u | 指定ユーザーのプロセスを表示 |
-p <PID> | 指定PIDのプロセスを表示 |
-t <TTY> | 指定端末のプロセスを表示 |
-s | セッションID単位で表示 |
-C <コマンド> | 指定コマンド名で検索 |
-o <フォーマット> | 表示列をカスタマイズ(例:ps -o user,pid,%cpu) |
よく使われる組み合わせとしてps aux(全プロセスを詳細表示)があります。
詳しくはpsコマンドの記事を参照してください。
top
topコマンドは、プロセスとシステムリソースの使用状況をリアルタイムで監視できるコマンドです。psが一度きりのスナップショットなのに対し、topは画面が自動更新され続けます。
top
画面の主な構成は次の通りです。
| 行 | 内容 |
|---|---|
| 1行目(top) | システム稼働時間、ログインユーザー数、ロードアベレージ(uptimeと同様) |
| 2行目(Tasks) | 実行中/スリープ/停止/ゾンビプロセスの数 |
| 3行目(%CPU(s)) | us(ユーザー)/sy(システム)/ni(nice)/id(アイドル)/wa(I/O待ち)/hi/si/st |
| 4行目(MiB Mem) | メモリの total/free/used/buff-cache |
| 5行目(MiB Swap) | スワップの total/free/used/avail Mem |
プロセス一覧の列:PID、USER、PR(優先度)、NI(nice値)、VIRT、RES、SHR、S(状態)、%CPU、%MEM、TIME+、COMMAND。
終了するにはqキーを押します。
詳しくはtopコマンドの記事を参照してください。
pstree
pstreeコマンドは、実行中のプロセスを親子関係のツリー構造で表示します。どのプロセスからどのプロセスが生成されたかを視覚的に確認できます。
pstree
例えば、systemd(親プロセス)からfirewalld(子プロセス)が生成されている、といった関係がひと目で分かります。
詳しくはpstreeコマンドの記事を参照してください。
pgrep
pgrepコマンドは、指定した名前のプロセスのPIDを検索するコマンドです。psより簡単にPIDだけを取得できるため、killと組み合わせて使われることが多くあります。
pgrep [オプション] プロセス名
使用例:
$ pgrep sshd
1256
2031
プロセス名も一緒に表示したい場合は-lを使います。
$ pgrep -l sshd
1256 sshd
2031 sshd
pgrepの主なオプション
| オプション | 説明 |
|---|---|
-l | PIDと一緒にプロセス名も表示 |
-a | コマンドライン全体を表示 |
-u | 指定ユーザーのプロセスを検索 |
-x | 完全一致でプロセス名を検索 |
-f | コマンドライン全体から検索 |
-n | 一番新しいプロセスだけ表示 |
-o | 一番古いプロセスだけ表示 |
-c | プロセス数を表示 |
詳しくはpgrepコマンドの記事を参照してください。
終了系:kill・pkill・killall
kill
killコマンドは、PID(プロセスID)を指定してプロセスにシグナルを送信するコマンドです。「終了」だけでなく、再起動や停止などの通知も送れます。
kill [オプション] プロセスID(PID)
使用例:
$ ps aux | grep sleep
$ kill 12345
killの主なオプション(シグナル)
| オプション | 説明 |
|---|---|
-15 | SIGTERM(通常終了、デフォルト) |
-9 | SIGKILL(強制終了、最終手段) |
-1 | SIGHUP(設定の再読み込み) |
-2 | SIGINT(Ctrl+Cと同じ) |
-l | 使用可能なシグナルの一覧を表示 |
まずはkill PID(SIGTERM)を試し、終了しない場合の最終手段としてkill -9を使うのがおすすめです。
詳しくはkillコマンドの記事を参照してください。
pkill
pkillコマンドは、PIDではなくプロセス名を指定して終了させるコマンドです。
pkill [オプション] [シグナル名] [プロセス名]
使用例:
$ pkill sleep
pkillの主なオプション
| オプション | 説明 |
|---|---|
-f | プロセス名の代わりにコマンドライン全体を一致対象にする |
-i | インタラクティブモード(確認あり) |
-c | マッチ数を表示(実際には終了しない) |
-l | 使用可能なシグナルの一覧を表示 |
-n | 最新のプロセスを対象にする |
-o | 最古のプロセスを対象にする |
-u | 指定ユーザーのプロセスを対象にする |
-s <シグナル> | 指定したシグナルを送信する |
詳しくはpkillコマンドの記事を参照してください。
killall
killallコマンドは、指定した名前を持つプロセスをまとめて終了させるコマンドです。同じプログラムが複数起動している場合に、PIDを調べずに一括終了できます。
killall [オプション] プロセス名
使用例:
$ killall firefox
強制終了する場合:
$ killall -9 firefox
killallの主なオプション
| オプション | 説明 |
|---|---|
-9 | 強制終了(SIGKILL) |
-15 | 通常終了(SIGTERM、デフォルト) |
-i | 終了前に確認を求める |
-v | シグナルを送ったプロセス名を表示 |
-u <ユーザー名> | 指定ユーザーのプロセスのみ対象 |
-e | プロセス名の完全一致のみ対象 |
-r | 正規表現でプロセス名を指定 |
⚠
killallは名前が一致するプロセスをすべて対象にするため、システムの重要プロセスを指定すると不安定化の原因になります。-iオプション付きでの実行がおすすめです。
詳しくはkillallコマンドの記事を参照してください。
優先度変更系:nice・renice
nice
niceコマンドは、コマンドを新規実行する際にプロセスの優先度(nice値)を指定するコマンドです。
nice [オプション] コマンド [引数...]
nice値の範囲は-20(最も優先)~19(最も低優先)で、デフォルトは0です。
使用例:
$ nice -n 10 tar -czf backup.tar.gz /home/user
niceの主なオプション
| オプション | 説明 |
|---|---|
-n <値> | nice値を指定(省略時は10) |
--help | ヘルプを表示 |
--version | バージョン情報を表示 |
優先度を上げる(nice値を負の数にする)には管理者権限(sudo)が必要です。
詳しくはniceコマンドの記事を参照してください。
renice
reniceコマンドは、すでに実行中のプロセスの優先度(nice値)を変更するコマンドです。niceが起動時の指定なのに対し、reniceは後から変更する点が異なります。
renice [オプション] [新しいnice値] -p [PID]
使用例:
# 一般ユーザーが実行可能(優先度を下げる方向)
renice 10 -p 1234
1234 (process ID) old priority 0, new priority 10
# sudoで優先度を上げる
sudo renice -5 -p 1234
1234 (process ID) old priority 10, new priority -5
reniceの主なオプション
| オプション | 説明 |
|---|---|
-n | 変更後のnice値を指定(省略可能) |
-p | プロセスIDを指定(デフォルト) |
-g | プロセスグループIDを指定 |
-u | ユーザー名またはUIDを指定し、該当ユーザーの全プロセスのnice値を変更 |
詳しくはreniceコマンドの記事を参照してください。
コマンド比較表
| 分類 | コマンド | 指定方法 | 主な用途 |
|---|---|---|---|
| 確認・監視 | ps | – | プロセスのスナップショット表示 |
| 確認・監視 | top | – | リアルタイム監視(CPU・メモリ含む) |
| 確認・監視 | pstree | – | プロセスの親子関係をツリー表示 |
| 確認・監視 | pgrep | プロセス名 | プロセス名からPIDを検索 |
| 終了 | kill | PID | PIDを指定して終了 |
| 終了 | pkill | プロセス名 | プロセス名を指定して終了 |
| 終了 | killall | プロセス名 | 同名プロセスをまとめて終了 |
| 優先度変更 | nice | 起動時 | 新規プロセスの優先度を指定 |
| 優先度変更 | renice | 実行中 | 実行中プロセスの優先度を変更 |
典型的な使用フロー
topまたはps auxで全体の状況を確認する- 気になるプロセスがあれば
pgrepやps -CでPIDを特定する pstreeで親子関係を確認し、影響範囲を把握する- 終了させたい場合は
kill PID(SIGTERM)を試す - 終了しない場合は
kill -9、複数ある場合はpkill/killallを使う - 重い処理を実行する前に優先度を下げたい場合は
nice -nで起動する - すでに動いているプロセスの優先度を調整したい場合は
reniceを使う
まとめ
プロセス管理コマンドは、「確認・監視(ps・top・pstree・pgrep)」「終了(kill・pkill・killall)」「優先度変更(nice・renice)」の3つに分けて理解すると整理しやすくなります。
終了系コマンド、特に-9(SIGKILL)やkillallは強力な反面リスクも伴うため、まずは通常終了を試し、最終手段として使うようにしましょう。
以上です!
ここまで読んでいただきありがとうございました!

コメント