このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
Linuxコマンド演習52
以下のコマンドの演習を行います。
実際にコマンド操作を行いながら、Linuxの操作に慣れていきましょう。
演習01:利用可能なシグナルの一覧を表示する。
・-lオプションを指定して、利用可能なシグナルの一覧を表示します。
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
演習02:killコマンドを使ってプロセスを強制終了する。
・geditをバックグラウンドで実行し、psコマンドで実行中のプロセスを確認します。
$ gedit &
[1] 5205
$ ps
PID TTY TIME CMD
5043 pts/0 00:00:00 bash
5205 pts/0 00:00:00 gedit
5222 pts/0 00:00:00 ps
geditがバックグラウンドで起動します。
プロセス番号は、毎回同じ数字になるとは限りません。実行時に確認する必要があります。
・強制終了のシグナル(SIGKILL)を送信してgeditを終了させます。その際、プロセス番号を指定します。
$ kill -9 5205
[1]+ 強制終了 gedit
geditが強制終了します。
演習03:killallコマンドを使ってプロセスを終了させる。
・firefoxをバックグラウンドで実行し、psコマンドで実行中のプロセス名を確認します。
$ firefox &
[1] 3885
[user01@localhost ~]$ [Parent 3885, Main Thread] WARNING: No marshaller for signature of signal 'PropertiesChanged': 'glib warning', file /builddir/build/BUILD/firefox-115.7.0/toolkit/xre/nsSigHandlers.cpp:167
** (firefox:3885): WARNING **: 22:40:33.638: No marshaller for signature of signal 'PropertiesChanged'
$ ps
PID TTY TIME CMD
3625 pts/0 00:00:00 bash
3885 pts/0 00:00:07 firefox
3972 pts/0 00:00:00 Socket Process
4172 pts/0 00:00:00 Privileged Cont
4245 pts/0 00:00:00 WebExtensions
4373 pts/0 00:00:00 Web Content
4374 pts/0 00:00:00 Web Content
4384 pts/0 00:00:00 Web Content
4666 pts/0 00:00:00 ps
$
firefoxがバックグラウンドで起動します。
・プロセス名に firefox を指定して終了要求のシグナル(SIGTERM)を送信します。
$ killall -SIGTERM firefox
firefoxが終了します。
まとめ
killコマンド、killallコマンドを使用すると特定のプロセスやプロセスグループを終了させることができます。ただし、kill -9
のように強制終了シグナルを使用する場合は、プロセスが正常に終了できない場合にデータ損失や問題が発生する可能性があるので注意が必要です。