linux killallコマンドを実行時にcommand not foundと出力された


# はじめに
linuC 101の勉強の際にkillallコマンドの動作確認をしたところ、
コマンドがありませんと表示されたため、対応した内容を記事にまとめました。

## 前提条件
OS CentOS7


# 対応手順
### スクリプトを実行した
スクリプト実行しました。
```
# cat /tmp/test.sh
#!/bin/bash

sleep 100
```
### バックグランドでスクリプトを実行しました
```
# /tmp/test.sh &
```
### 自分が現在起動しているプロセスを表示した
先程実行したスクリプト「test.sh」っとスクリプト内部のsleepのプロセスが実行中であることを確認した
```
# ps
  PID TTY          TIME CMD
 1251 pts/0    00:00:00 bash
 1399 pts/0    00:00:00 test.sh
 1400 pts/0    00:00:00 sleep
 1403 pts/0    00:00:00 ps
```
### test.shのプロセスを終了してみた
killについては、以下のサイトが参考になりました。
https://atmarkit.itmedia.co.jp/ait/articles/1604/05/news022.html#sample2

コマンドがありませんというメッセージが出力されました。
```
# killall -s 15 test.sh
-bash: killall: command not found
```
### whichコマンドで確認
実行されるコマンドの実行ファイルをフルパスで表示しました。
環境変数PATHに含まれているディレクトリに、killallが存在しないことを確認しました。

以下のサイトを参考にしました。
https://atmarkit.itmedia.co.jp/ait/articles/1703/16/news020.html

QiitaではBashでコマンドの存在チェックの記事が大変参考になりました。
https://qiita.com/kawaz/items/1b61ee2dd4d1acc7cc94

```
# which killall
/usr/bin/which: no killall in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

コマンドが存在する例
# which kill
/usr/bin/kill
```
typeコマンドで確認
typeコマンドは、指定したコマンドがbashでどのように解釈されるかを調べるコマンドです。

以下のサイトの説明から引用しました。
https://atmarkit.itmedia.co.jp/ait/articles/1703/16/news020.html

killallはnot foundとなり、コマンドが存在しないことが分かりました。
```
※rootユーザーはbashが起動していることを確認した。
[root@localhost ~]# cat /etc/passwd | grep root
root:x:0:0:root:/root:/bin/bash

# type killall
-bash: type: killall: not found

※killはbashの組み込みコマンドである
# type kill
kill is a shell builtin
```
killallのコマンド自体がない事が分かったため、おそらくパッケージのインストールが必要と考えました。
以下のサイトを参考して「psmisc」パッケージをインストールしました。
https://bbs.archlinux.org/viewtopic.php?id=55779
```
# yum install psmisc
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.aktkn.sg
 * extras: download.nus.edu.sg
 * updates: download.nus.edu.sg
Resolving Dependencies
--> Running transaction check
---> Package psmisc.x86_64 0:22.20-17.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================================================== Package                           Arch                              Version                                  Repository                       Size
====================================================================================================================================================Installing:
 psmisc                            x86_64                            22.20-17.el7                             base                            141 k

Transaction Summary
====================================================================================================================================================Install  1 Package

Total download size: 141 k
Installed size: 475 k
Is this ok [y/d/N]: y
Downloading packages:
psmisc-22.20-17.el7.x86_64.rpm                                                                                              | 141 kB  00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : psmisc-22.20-17.el7.x86_64                                                                                                      1/1
  Verifying  : psmisc-22.20-17.el7.x86_64                                                                                                      1/1

Installed:
  psmisc.x86_64 0:22.20-17.el7

Complete!
```
### test.shのプロセスを再度終了してみた
test.shスクリプトのプロセスは終了しました。
```
# killall -s 15 test.sh
[1]+  Terminated              /tmp/test.sh
# killall -s 15 sleep
```
### 自分の実行したプロセスを確認した

sleepプロセスとtest.shプロセスが消えていることを確認した
```
# ps
  PID TTY          TIME CMD
 1251 pts/0    00:00:00 bash
 1416 pts/0    00:00:00 ps
```
# まとめ
linuCの勉強ですが、実機でコマンドの動作確認をすると、
うまくいかないことがあるため、大変勉強になります。
コマンドを暗記するだけでなく、手を動かすことでトラブルシューティングを学ぶことが出来ます。
また、killallコマンドが見つかりませんというメッセージについての対応方法ですが、
ネット上にあまり情報がなかったため、Qiitaにまとめました。
誰かのお役に立てたら幸いです。