このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンドの基本:ジョブ・プロセスの終了

ジョブ・プロセスの終了
Linuxシステムを操作していると、誤ってコマンドを実行してしまったり、プログラムがフリーズして操作を受け付けなくなることがあります。そのような場合、ジョブやプロセスを適切に終了させる方法を知っておくことは重要です。ここでは、ジョブおよびプロセスの終了方法について詳しく解説します。

ジョブの終了
ジョブを終了させる方法は、そのジョブがフォアグラウンドで実行されているか、バックグラウンドで実行されているかによって異なります。
フォアグラウンドジョブの終了
フォアグラウンドジョブは、ユーザーが直接操作しているコマンドやプログラムです。これを終了させる最も一般的な方法は、Ctrl + C
を押すことです。
操作例
長時間待機するコマンドsleep 10000
を実行します。
$ sleep 10000
Ctrl + C
を押すと、コマンドが中断され、シェルに戻ります。
^C
バックグラウンドジョブの終了
バックグラウンドジョブは、シェルの背後で実行されているコマンドやプログラムで、キーボードからの直接入力を受け付けません。そのため、バックグラウンドジョブを終了させるには、kill
コマンドを使用します。
【書式】 kill %[ジョブ番号]
%
を付けることで、ジョブ番号を指定します。
操作例
1.ジョブを3つ作成し、停止状態にする
1つ目のジョブを作成します。
user01@ubuntu:~$ man bash
Ctrl + Z
を押して一時停止します。
[1]+ 停止 man bash
2つ目のジョブを作成します。
user01@ubuntu:~$ sleep 1000
Ctrl + Z
を押して一時停止します。
[2]+ 停止 sleep 1000
3つ目のジョブを作成します。
user01@ubuntu:~$ less /etc/crontab
Ctrl + Z
を押して一時停止します。
[3]+ 停止 less /etc/crontab
2.現在のジョブ一覧を確認
user01@ubuntu:~$ jobs
[1] 停止 man bash
[2]- 停止 sleep 1000
[3]+ 停止 less /etc/crontab
3.特定のジョブを終了
ジョブ番号1
のman bash
を終了する場合
user01@ubuntu:~$ kill %1
[1] 停止 man bash
4.ジョブの終了を確認
user01@ubuntu:~$ jobs
[1] 終了 man bash
[2]- 停止 sleep 1000
[3]+ 停止 less /etc/crontab
ジョブ[1]
が終了したことが確認できます。ジョブが終了すると、上記のように「Terminated」というメッセージが表示されます。環境によっては、日本語で「終了しました」と表示されます。
プロセスの終了
プロセスを終了させる場合も、kill
コマンドを使用しますが、ジョブとは異なり、プロセスID(PID)を直接指定します。
【書式】kill <プロセスID>
%
を付けずに、プロセスIDをそのまま指定します。
操作例
1.別のターミナルでプロセスを実行
- ターミナル2で
less /etc/crontab
を実行し、ファイルを閲覧します。
user01@ubuntu:~$ less /etc/crontab

2.ターミナル1でプロセス一覧を確認
user01@ubuntu:~$ ps xf
出力例
PID TTY STAT TIME COMMAND
...
4946 ? Ssl 0:03 \_ /usr/libexec/gnome-terminal-server
4953 pts/0 Ss 0:00 \_ bash
4987 pts/0 T 0:00 | \_ sleep 1000
4990 pts/0 T 0:00 | \_ less /etc/crontab
5613 pts/0 R+ 0:00 | \_ ps xf
5547 pts/1 Ss 0:00 \_ bash
5603 pts/1 S+ 0:00 \_ less /etc/crontab
プロセスID 5603
がターミナル2で実行中の less /etc/crontab
であることが分かります。
3.プロセスを終了
user01@ubuntu:~$ kill 5603
4.プロセスの終了を確認
ターミナル2のless /etc/crontab
が終了し、出力がなくなります。
user01@ubuntu:~$ less /etc/crontab
user01@ubuntu:~$
注意点
- 権限の制限:プロセスを終了できるのは、そのプロセスの所有者(実効ユーザー)のみです。
- スーパーユーザー:
root
ユーザーは、すべてのプロセスを終了させることができます。
まとめ
- フォアグラウンドジョブの終了
・Ctrl + C
を使用して、実行中のコマンドを終了できます。 - バックグラウンドジョブの終了
・kill %[ジョブ番号]
コマンドを使用し、ジョブ番号を指定して終了します。 - プロセスの終了
・kill <プロセスID>
コマンドを使用し、プロセスIDを指定して終了します。
・プロセスIDはps
コマンドなどで確認できます。 - 権限
・自分のジョブやプロセスのみ操作可能。
・スーパーユーザーは全てのプロセスを操作可能。
ジョブとプロセスの終了方法を理解しておくことで、システムの安定性を保ち、効率的に作業を進めることができます。特に、システム管理者としてデーモンやサービスを管理する際には、プロセスの終了操作が必要となる場面が多いため、しっかりと習得しておきましょう。