どうも、ミノルです!突然ですが
killコマンドって知っていますか?
「kill」って危ない感じがしますが、詳細を聞けば「ああ、そういうことか!」と腑に落ちてもらえると思います。本記事ではこの危ない感じのする「kill」コマンドを解き明かしていきましょう
なお、この記事はEnvaderというインフラ学習サイトのLinux基礎コースを参考に作っています!
今回のシナリオはこちら
結論
killコマンドとは、実行中のプロセスを終了させるコマンドです。
どういった時に使用される?
主にゾンビプロセスと呼ばれるプロセスに対して使います。
ゾンビプロセスって?
ゾンビプロセスは、役割が終わったのにCPUの使用率やメモリを空けないプロセスの事です。
『ヴヴァァ...』とゾンビ化してしまったプロセスに対して『もう休んでいいんだよ。』と言って楽にしてあげるのが、killコマンドなのです。
また、キーボードのCTRL+Cでプロセスの実行を止める事ができるのですが、CTRL+Cでも止めることの出来ないプロセスに対しても「別のターミナルを開いて該当のPIDを指定してkillコマンドを打つ」ことでプロセスを止めるなどの使い方がされます。
killコマンドを打ってみよう!
では、実際にkillコマンドを使ってみましょう。
killコマンドを使うときは、「どこにどのプロセスがあるのかを知る」必要があります。
この「どこにどのプロセスがあるのか」を示すものをPID(プロセスID)と言います。
killコマンドを使うときはこのPIDをまず先に特定します。
以下のおまじないを使えば、PIDが分かります。($は打たないでください)
$ ps aux
するとこのような、よく分からないものがたくさん出てきたと思います。しかし、ここで見るべきは「PID」という事が分かっているあなたは、こんな画面が出てきても混乱せずに済むのです!
@172-19-2-2:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 2.2 0.0 17944 2716 ? Ss 02:56 0:00 /bin/bash /init.sh
root 12 0.0 0.0 69956 3116 ? Ss 02:56 0:00 /usr/sbin/sshd
envader 13 0.0 0.0 702216 1076 ? Sl 02:56 0:00 /tmp/malware
root 14 0.0 0.0 4220 676 ? S 02:56 0:00 tail -f
root 18 0.1 0.1 92728 6664 ? Ss 02:56 0:00 sshd: envader [priv]
envader 24 0.0 0.1 92728 4084 ? S 02:56 0:00 sshd: envader@pts/0
envader 25 0.0 0.0 19240 3336 pts/0 Ss+ 02:56 0:00 -bash
envader 33 0.0 0.0 18808 2964 pts/0 S+ 02:56 0:00 tmux new -s main
envader 35 0.0 0.0 27420 3168 ? Ss 02:56 0:00 tmux new -s main
envader 36 0.0 0.0 19480 3732 pts/1 Ss 02:56 0:00 -bash
envader 47 0.0 0.0 37784 3196 pts/1 R+ 02:57 0:00 ps aux
この画面よく見ると怪しいものがありますねぇ🤔なんと!PID13のプロセスの最後に
「malware」(マルウェア)と書いてあるではありませんか!
💡 マルウェアとは、コンピュータで様々な悪さをするソフトウェアの総称です!こんなものがあっては夜も安心して眠れません!早速killコマンドで退治しましょう!
#PID13番を終了する
$ kill 13
実行すると...
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 17944 2716 ? Ss 02:56 0:00 /bin/bash /init.sh
root 12 0.0 0.1 69956 3812 ? Ss 02:56 0:00 /usr/sbin/sshd
root 14 0.0 0.0 4220 648 ? S 02:56 0:00 tail -f
envader 35 0.0 0.0 27420 3228 ? Ss 02:56 0:00 tmux new -s main
envader 36 0.0 0.0 19480 3600 pts/1 Ss 02:56 0:00 -bash
root 130 0.0 0.1 92728 6588 ? Ss 03:23 0:00 sshd: envader [priv]
envader 136 0.0 0.1 92728 4244 ? S 03:23 0:00 sshd: envader@pts/0
envader 137 0.0 0.0 19240 3348 pts/0 Ss+ 03:23 0:00 -bash
envader 145 0.0 0.0 18808 2904 pts/0 S+ 03:23 0:00 tmux attach -t main
envader 147 0.0 0.0 37784 3204 pts/1 R+ 03:24 0:00 ps aux
PID13の表記が無くなっていますね。マルウェアの退治に成功しました!これで夜もぐっすりと眠る事が出来そうです!
💡 ちなみに「$」はコマンドの待機を示していて『コマンドが打たれるまで待ってるよ〜』という事を表しています。名称は「プロンプト」と言います。ゾンビプロセスの例は用意できませんでした!ごめんなさい!
まとめ
killコマンドは実行中のプロセスを終了させる時に使うコマンドで
使うときは以下のようにPIDを指定して使う
#PID13番を終了する
$ kill 13
雑感
書いていて思ったのですが、やっぱりコマンドを学ぶ時は打って使うまでがセットだと思いました。すでに知っている所を分かりやすく解説する記事もいいですが、あまり知らない所を取り扱ったら記事にするまでに多くの事を学べそうだと思いました。ただ、参考にする情報にはきをつけたいですね...w
今回の内容を記事にするまでにあやふやな所を復習できたので良かったです。