Envaderでkillコマンド使ってみた

どうも、ミノルです！突然ですが

### killコマンドって知っていますか？

「kill」って危ない感じがしますが、詳細を聞けば「ああ、そういうことか！」と腑に落ちてもらえると思います。本記事ではこの危ない感じのする「kill」コマンドを解き明かしていきましょう

なお、この記事は[Envader](https://envader.plus/)というインフラ学習サイトの[Linux基礎コース](https://envader.plus/courses)を参考に作っています！

今回のシナリオはこちら

[Envader](https://envader.plus/course/1/scenario/1009)

### 結論

---

killコマンドとは、実行中のプロセスを終了させるコマンドです。

### どういった時に使用される？

---

主にゾンビプロセスと呼ばれるプロセスに対して使います。

ゾンビプロセスって？

ゾンビプロセスは、役割が終わったのにCPUの使用率やメモリを空けないプロセスの事です。

『ヴヴァァ...』とゾンビ化してしまったプロセスに対して『もう休んでいいんだよ。』と言って楽にしてあげるのが、killコマンドなのです。

また、キーボードのCTRL＋Cでプロセスの実行を止める事ができるのですが、CTRL＋Cでも止めることの出来ないプロセスに対しても「別のターミナルを開いて該当のPIDを指定してkillコマンドを打つ」ことでプロセスを止めるなどの使い方がされます。

### killコマンドを打ってみよう！

では、実際にkillコマンドを使ってみましょう。

killコマンドを使うときは、「どこにどのプロセスがあるのかを知る」必要があります。

この「どこにどのプロセスがあるのか」を示すものをPID（プロセスID）と言います。

killコマンドを使うときはこのPIDをまず先に特定します。

以下のおまじないを使えば、PIDが分かります。（$は打たないでください）

```bash
$ ps aux
```

するとこのような、よく分からないものがたくさん出てきたと思います。しかし、ここで見るべきは「PID」という事が分かっているあなたは、こんな画面が出てきても混乱せずに済むのです！

```bash
@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」(マルウェア)と書いてあるではありませんか！

<aside>
💡 マルウェアとは、コンピュータで様々な悪さをするソフトウェアの総称です！

</aside>

こんなものがあっては夜も安心して眠れません！早速killコマンドで退治しましょう！

```bash
#PID13番を終了する
$ kill 13
```

実行すると...

```bash
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の表記が無くなっていますね。マルウェアの退治に成功しました！これで夜もぐっすりと眠る事が出来そうです！


<aside>
💡 ちなみに「$」はコマンドの待機を示していて『コマンドが打たれるまで待ってるよ〜』という事を表しています。名称は「プロンプト」と言います。

</aside>

ゾンビプロセスの例は用意できませんでした！ごめんなさい！

### まとめ

---

killコマンドは実行中のプロセスを終了させる時に使うコマンドで

使うときは以下のようにPIDを指定して使う

```bash
#PID13番を終了する
$ kill 13
```

### 雑感

---

書いていて思ったのですが、やっぱりコマンドを学ぶ時は打って使うまでがセットだと思いました。すでに知っている所を分かりやすく解説する記事もいいですが、あまり知らない所を取り扱ったら記事にするまでに多くの事を学べそうだと思いました。ただ、参考にする情報にはきをつけたいですね...w

今回の内容を記事にするまでにあやふやな所を復習できたので良かったです。

[Envader](https://envader.plus/courses)

### 参考にさせていただいた記事、書籍

---

[Linuxコマンド【 sleep 】指定した時間だけ処理を遅延 - Linux入門 - Webkaru](https://webkaru.net/linux/sleep-command/)

[【linux】sleepコマンドの使用例と注意点を解説](https://lanchesters.site/linux-sleep/)

[マルウェアとは？ウイルスとの違いは？](https://www.ntt.com/business/services/network/internet-connect/ocn-business/bocn/knowledge/archive_19.html)

[入門者のLinux](https://www.amazon.co.jp/%E5%85%A5%E9%96%80%E8%80%85%E3%81%AELinux-%E7%B4%A0%E6%9C%B4%E3%81%AA%E7%96%91%E5%95%8F%E3%82%92%E8%A7%A3%E6%B6%88%E3%81%97%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-%E3%83%96%E3%83%AB%E3%83%BC%E3%83%90%E3%83%83%E3%82%AF%E3%82%B9-%E5%A5%88%E4%BD%90%E5%8E%9F-%E9%A1%95%E9%83%8E/dp/4062579898)

[Linux標準教科書](https://linuc.org/textbooks/linux/)