Linuxプロセス管理コマンド解説

プロセス管理コマンド

プロセスの表示、監視、制御などを行うコマンドです。

ps - プロセスの表示

実行中のプロセスを表示します。

オプション 説明
-e, -A すべてのプロセスを表示
-f 完全なフォーマットで表示(親プロセスIDなどの追加情報)
-l 長いフォーマットで表示
-u [user] 指定したユーザーのプロセスを表示
-p [pid] 指定したプロセスIDのプロセスを表示
--sort=[column] 指定した列でソート(例: --sort=-%cpu)
-o [format] 出力フォーマットをカスタマイズ

例:

ps - 現在のターミナルのプロセスを表示
ps -ef - すべてのプロセスを完全なフォーマットで表示
ps aux - すべてのプロセスをユーザー指向フォーマットで表示
ps -u root - rootユーザーのプロセスを表示
ps --sort=-%cpu - CPU使用率の高い順にソート
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head - メモリ使用率の高い上位プロセスを表示
ps -C nginx - 特定の名前のプロセス(この場合はnginx)を表示
ps -p 1234 -o pid,ppid,cmd,lstart - 特定のプロセスIDの詳細情報と開始時間を表示
ps -U root -u root u - rootが所有するプロセスを詳細フォーマットで表示
ps aux --forest - プロセスをツリー構造で表示(親子関係が分かりやすい)

top - プロセスのリアルタイム監視

システムのプロセスをリアルタイムで監視します。

オプション/キー 説明
-d [seconds] 更新間隔を指定(秒)
-n [iterations] 指定した回数だけ更新して終了
-p [pid] 指定したプロセスIDのみを監視
-u [user] 指定したユーザーのプロセスのみを表示
k プロセスを終了(実行中にkキーを押す)
r プロセスの優先度を変更(実行中にrキーを押す)
f 表示する列を選択(実行中にfキーを押す)
q topを終了(実行中にqキーを押す)

例:

top - プロセスをリアルタイムで監視
top -d 5 - 5秒間隔で更新
top -n 10 - 10回更新して終了
top -u username - 特定ユーザーのプロセスのみを表示
top -b -n 1 > top_output.txt - バッチモードで1回だけ実行し、結果をファイルに保存
top -b -n 1 | grep "firefox" - 特定のプロセス(この場合はfirefox)の情報のみを抽出
top -c - コマンドラインの完全なパスを表示
top -o %MEM - メモリ使用率でソート
top -i - アイドル状態のプロセスを非表示

htop - 拡張プロセスビューア

topの拡張版で、より使いやすいインターフェースを提供します。

キー 説明
F1-F10 各種機能へのショートカット
Space プロセスをマーク/マーク解除
F9 マークしたプロセスを終了
F6 ソート列を選択
F5 ツリー表示に切り替え
F2 設定メニューを表示

例:

htop - htopを起動
htop -u username - 特定ユーザーのプロセスのみを表示
htop -p 1234,5678 - 指定したプロセスIDのみを表示
htop -s PERCENT_MEM - メモリ使用率でソート
htop -d 10 - 10秒間隔で更新
htop -t - ツリー表示モードで起動
htop --readonly - 読み取り専用モードで起動(操作による変更を防止)
htop -C - モノクロモードで起動(一部の環境で有用)

kill - プロセスの終了

指定したプロセスIDのプロセスにシグナルを送信します。

オプション/シグナル 説明
-l 利用可能なシグナルの一覧を表示
-1, -HUP HUP(ハングアップ)シグナル - 多くの場合、プロセスの再起動や設定の再読み込みに使用
-2, -INT INT(割り込み)シグナル - Ctrl+Cと同等
-9, -KILL KILL(強制終了)シグナル - プロセスを強制的に終了(プロセスが応答しない場合に使用)
-15, -TERM TERM(終了)シグナル - デフォルトのシグナル、プロセスに正常終了を要求

例:

kill 1234 - プロセスID 1234のプロセスに終了シグナル(TERM)を送信
kill -9 1234 - プロセスID 1234のプロセスを強制終了
kill -HUP 1234 - プロセスID 1234のプロセスに再起動シグナルを送信
kill -l - 利用可能なすべてのシグナルを一覧表示
kill -0 1234 - プロセスの存在確認(シグナルは送信せず、プロセスが存在すれば終了コード0を返す)
kill $(pgrep firefox) - プロセス名でプロセスを終了
kill -SIGSTOP 1234 - プロセスを一時停止(SIGCONT で再開可能)
kill -SIGCONT 1234 - 一時停止したプロセスを再開

killall - 名前でプロセスを終了

指定した名前のすべてのプロセスにシグナルを送信します。

オプション 説明
-i 各プロセスを終了する前に確認を求める
-I 大文字小文字を区別しない
-u [user] 指定したユーザーのプロセスのみを終了
-s [signal] 送信するシグナルを指定
-v 詳細な情報を表示

例:

killall firefox - すべてのfirefoxプロセスを終了
killall -9 httpd - すべてのhttpdプロセスを強制終了
killall -u username firefox - 特定ユーザーのfirefoxプロセスを終了
killall -i chrome - 各プロセスを終了する前に確認を求める
killall -w firefox - プロセスが完全に終了するまで待機
killall -r "fire.*" - 正規表現にマッチするプロセスを終了(firefoxやfirefox-esr等)
killall -o 15m bash - 15分以上前から実行されているbashプロセスを終了
killall -y 10m -o 1h bash - 1時間以上前から実行され、かつ10分以内に実行されていないbashプロセスを終了

nice/renice - プロセスの優先度の設定・変更

プロセスの実行優先度(nice値)を設定または変更します。nice値は-20(最高優先度)から19(最低優先度)までの範囲で、デフォルトは0です。

コマンド/オプション 説明
nice -n [value] [command] 指定した優先度でコマンドを実行
renice [value] -p [pid] 実行中のプロセスの優先度を変更
renice [value] -u [user] 指定したユーザーのすべてのプロセスの優先度を変更

例:

nice -n 10 ./script.sh - 低い優先度(10)でスクリプトを実行
sudo nice -n -10 ./important_task - 高い優先度(-10)でタスクを実行
sudo renice -5 -p 1234 - プロセスID 1234の優先度を-5に変更
sudo renice 10 -u username - 特定ユーザーのすべてのプロセスの優先度を下げる
nice - 現在のシェルのnice値を表示
nice -n 19 tar -czf backup.tar.gz /home/user - バックアップ処理を最低優先度で実行
sudo renice -n 5 -g 1000 - グループID 1000のすべてのプロセスの優先度を変更
ps -o pid,ni,cmd | grep firefox - 特定のプロセスの現在のnice値を確認
sudo renice -n 0 -p $(pgrep -d ' ' firefox) - 複数のプロセスIDの優先度を一度に変更

nohup - ログアウト後もプロセスを実行

ターミナルを閉じたりログアウトしたりしても、プロセスを継続して実行します。

構文 説明
nohup [command] & コマンドをバックグラウンドで実行し、ターミナルを閉じても継続して実行

例:

nohup ./long_running_script.sh & - スクリプトをバックグラウンドで実行し、ログアウト後も継続
nohup wget https://example.com/large-file.iso & - ファイルのダウンロードをバックグラウンドで継続
nohup ./script.sh > custom_output.log 2>&1 & - 標準出力と標準エラー出力を指定したファイルにリダイレクト
nohup ./script.sh > /dev/null 2>&1 & - 出力を破棄(ログを残さない場合)
nohup nice -n 19 ./backup.sh & - 低い優先度でバックグラウンド実行
echo 'nohup ./script.sh &' | at midnight - 指定した時間にnohupコマンドを実行
nohup bash -c "for i in {1..10}; do ./task.sh; sleep 60; done" & - 複数のコマンドをnohupで実行

出力は通常、カレントディレクトリの「nohup.out」ファイルにリダイレクトされます。

bg/fg - バックグラウンド/フォアグラウンドでのジョブ制御

ジョブをバックグラウンドまたはフォアグラウンドで実行します。

コマンド 説明
command & コマンドをバックグラウンドで実行
Ctrl+Z 実行中のプロセスを一時停止
bg 一時停止したジョブをバックグラウンドで再開
bg %[job_id] 指定したジョブをバックグラウンドで再開
fg 最後に一時停止したジョブをフォアグラウンドで再開
fg %[job_id] 指定したジョブをフォアグラウンドで再開
jobs バックグラウンドジョブの一覧を表示

例:

./long_script.sh & - スクリプトをバックグラウンドで実行
jobs - バックグラウンドジョブの一覧を表示
fg %1 - ジョブID 1をフォアグラウンドで再開
bg %2 - ジョブID 2をバックグラウンドで再開
jobs -l - バックグラウンドジョブの一覧をプロセスIDも含めて表示
jobs -p - バックグラウンドジョブのプロセスIDのみを表示
fg %% - 最後に停止したジョブをフォアグラウンドで再開
bg $(jobs -p | tail -1) - 最後のジョブをバックグラウンドで再開
kill %1 - ジョブID 1を終了
disown %1 - ジョブID 1をシェルのジョブ制御から切り離す(ログアウト後も実行を継続)