プロセスとは
プロセスは、実行中のプログラムのインスタンスです。各プロセスには固有のプロセスID(PID)が割り当てられ、システムリソース(CPU、メモリなど)を使用します。
プロセスの確認:ps
ps
(Process Status)は、現在実行中のプロセスの一覧を表示します。
基本的な使い方
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
試してみよう:
ps
- 現在のターミナルのプロセスps aux
- すべてのプロセスを詳細表示ps -ef
- 完全なフォーマットで表示
psの主要なオプション
オプション | 説明 |
---|---|
a | すべてのユーザーのプロセス |
u | ユーザー指向のフォーマット |
x | ターミナルに関連しないプロセスも表示 |
-e | すべてのプロセス |
-f | 完全なフォーマット |
-l | 長いフォーマット |
プロセス情報の見方
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 225768 9536 ? Ss 10:00 0:01 /sbin/init
列 | 説明 |
---|---|
USER | プロセスの所有者 |
PID | プロセスID |
%CPU | CPU使用率 |
%MEM | メモリ使用率 |
STAT | プロセスの状態 |
COMMAND | 実行コマンド |
リアルタイム監視:top
top
は、システムリソースの使用状況をリアルタイムで表示します。
topの基本操作
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
top
実行中の操作キー:
q
: 終了k
: プロセスをkillr
: プロセスの優先度変更M
: メモリ使用量でソートP
: CPU使用率でソート1
: CPU別表示の切り替え
topの情報の読み方
top - 15:30:02 up 10 days, 3:15, 2 users, load average: 0.15, 0.10, 0.08
Tasks: 120 total, 1 running, 119 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.0 us, 1.0 sy, 0.0 ni, 97.0 id, 0.0 wa, 0.0 hi, 0.0 si
MiB Mem : 7982.0 total, 2048.0 free, 3500.0 used, 2434.0 buff/cache
プロセスの終了:kill
kill
は、プロセスにシグナルを送信します。最も一般的な用途はプロセスの終了です。
基本的なシグナル
シグナル | 番号 | 説明 |
---|---|---|
TERM | 15 | 通常終了(デフォルト) |
KILL | 9 | 強制終了 |
HUP | 1 | ハングアップ(再読み込み) |
INT | 2 | 割り込み(Ctrl+C相当) |
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
プロセスの終了は慎重に:
- まず
kill PID
(TERM)で通常終了を試す - 応答しない場合のみ
kill -9 PID
で強制終了 - システムプロセスは終了しない
プロセス終了の例
# プロセスIDを確認
ps aux | grep firefox
# 通常終了
kill 12345
# 強制終了(最終手段)
kill -9 12345
# プロセス名で終了
pkill firefox
killall chrome
ジョブコントロール
ターミナルで実行中のプログラムをバックグラウンド/フォアグラウンドで制御できます。
ジョブの操作
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
ジョブコントロールの基本:
Ctrl+Z
: 実行中のプロセスを一時停止jobs
: ジョブ一覧を表示bg %1
: ジョブ1をバックグラウンドで再開fg %1
: ジョブ1をフォアグラウンドに&
: コマンドの最後に付けてバックグラウンド実行
実践例
# 長時間実行されるコマンドをバックグラウンドで
find / -name "*.log" 2>/dev/null > logfiles.txt &
# 実行中のコマンドをバックグラウンドに
sleep 100
# Ctrl+Z で一時停止
bg
# ジョブの確認
jobs
# フォアグラウンドに戻す
fg %1
プロセスの優先度
niceとrenice
プロセスの優先度(nice値)を調整できます。
# 低優先度で実行(nice値10)
nice -n 10 command
# 実行中のプロセスの優先度を変更
renice -n 5 -p PID
Nice値の範囲:
- -20(最高優先度)から 19(最低優先度)
- デフォルトは 0
- 一般ユーザーは優先度を下げることのみ可能
システム情報の確認
その他の便利なコマンド
# システムの負荷平均
uptime
# メモリ使用状況
free -h
# ディスク使用状況
df -h
# 開いているファイル
lsof
# ネットワーク接続
netstat -an
ss -an
実践演習
以下の演習に挑戦してみましょう:
CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$
█
ファイルツリー
/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log
課題
- 現在のシェルのプロセスIDを確認
- CPU使用率の高いプロセスTop 5を表示
- sleepコマンドをバックグラウンドで実行
- 実行中のsleepプロセスを終了
解答例:
# 1. シェルのPIDを確認
echo $$
ps
# 2. CPU使用率Top 5
ps aux --sort=-%cpu | head -6
# 3. バックグラウンドでsleep
sleep 300 &
# 4. sleepを終了
jobs
kill %1
# または
ps aux | grep sleep
kill [PID]
トラブルシューティング
ゾンビプロセス
親プロセスが終了情報を受け取っていない子プロセス:
# ゾンビプロセスの確認
ps aux | grep defunct
プロセスが終了しない場合
# 1. 通常のkill
kill PID
# 2. 少し待つ(10秒程度)
# 3. それでも終了しない場合
kill -9 PID
# 4. それでも残る場合は親プロセスを確認
ps -ef | grep PID
セキュリティの注意点
- 他のユーザーのプロセスには触らない
- システムプロセス(PID 1など)は終了しない
- 本番環境では慎重に操作する
- killする前にプロセスの役割を確認
まとめ
このレッスンでは、プロセス管理の基本を学びました。ps
、top
、kill
を使いこなすことで、システムの状態を把握し、適切に管理できるようになります。
次のレッスンでは、パーミッションと所有権について学びます。
💡 プロセス管理は慎重に!特に本番環境では、killする前に必ずプロセスの役割を確認しましょう。