Linux基礎（重要コマンド一覧）（２）

引き続きLinuxの重要コマンドをまとめています。


解説コマンド一覧

- ln
- find
- chmod
- chown
- ps
- kill


# ln -ファイル/フォルダへのリンク作成-
ファイルやフォルダに対してリンクを作成します。


「リンク」と上記で記載をしましたが、具体的にはファイル名に新しく別名をつけることができます。例えば、ファイル名が非常に長い場合、省略した名前をつけて管理しやすくすることができて便利です。

リンクには２種類があります。

- シンボリックリンク

こちらはwindowsOSの「ショートカット」に似ています。
ファイルは別のフォルダにありますが、ショートカットだけ別のフォルダに作っておいて、そのショートカットを使用してファイルにアクセスできますよね。

シンボリックリンクも同じ考え方になります。
そのため、元になるファイルが削除された場合、シンボリックリンクは参照するファイルがないためうまく機能しなくなります。

![スクリーンショット 0006-03-24 15.20.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/761d8bdb-82e5-73a2-c8a4-8332409a6225.png)

```
ln -s シンボリックリンクにしたい元ファイル名　新規作成するシンボリックリンクの名前
```


- ハードリンク

こちらは、純粋にファイルに対して２つの名前をつけるイメージです。

以下の図のファイル名①を削除しても、まだファイル名②の名前でファイルが存在するため、実際のファイルは削除されません。最終的にファイル名②が削除されると同時に実際のファイルも削除されることになります。

![スクリーンショット 0006-03-24 15.24.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/7e1c9e98-19a7-016c-859d-3b2b9a0b37d5.png)

```
ln ハードリンクにしたい元ファイル名　新規作成するハードリンクの名前
```

以下ではハードリンクとシンボリックリンクの２つを作成して挙動の違いの確認を行います。

「hello-world」という内容のsample.txtというファイルが存在します。
![ln1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/ee2a3d1c-2057-bf68-1c21-32bb54c39f3b.png)

以下でハードリンクを作成します。
![ln2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/d745c2aa-adb9-cb98-d8e7-1b707bf776c2.png)

以下でシンボリックリンクを作成します。

sample_hardというハードリンク, sample.txtを参照するsample_symbolicというシンボリックリンクが存在します。
![ln3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/0d152a1b-9de6-62c0-b53d-2a945ff71ea1.png)

どちらのリンクにもcatコマンドを使用して内容を見てみます。
しっかりとhello-worldが表示されます。
![ln4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/d15ac46d-183f-2011-69bd-4b7b647e6a56.png)


ここでハードリンクとシンボリックリンクの挙動の違いを確認します。
シンボリックリンクの参照元のsample.txtを削除します。
![ln5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/eed689ae-9b6f-ca44-7e1e-6535e0bf55e2.png)

ハードリンクに対してcatを実施して問題なくhello-worldが表示されます。

![ln6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/5c9f92c4-4ed1-163d-eb80-39af4ce17d5d.png)

一方、シンボリックリンクに対してcatを実施するとファイルが存在しないというエラーが表示されます。

![ln7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/bd430230-5801-93ac-c69b-c2cd334e9219.png)



# find -対象ファイルの検索-
対象のファイルを検索します。

実務でLinuxを使用する場合、非常に膨大なファイルを使用することになるため、対象のファイルを見つけ出して、特定の処理をするといったコマンドが用意されています。

文法は以下になります。

```
find 検索対象のディレクトリ名　- 検索条件 ファイル名　- 検索後の実行方法
```

今回は以下のコマンドを実行します。
LinuxPracticeというディレクトリの中でtest.txtという名前(name)のファイルを探して
存在した場合にはそのパスを表示する(print)という意味になります。
```
find LinuxPractice -name test.txt -print
```
![find1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/6b21feb9-5dc2-efdb-9ae1-fafad2cfdbfd.png)

パスが表示されます。
![find2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/cbc90f0b-ee8e-bca6-6545-035fb1481a34.png)


上記ではファイル名の検索を実施しましたがディレクトリ名も検索することができます。その場合は-type -dという文字を追加します。

![find3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/315be879-f931-351f-a1d2-7c70d0a6332e.png)

![find4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/6240914b-e311-fdc2-dd31-4a32b1016710.png)


# chmod -権限変更-
指定したファイルやフォルダの権限を変更します。

Linuxの中で作成されるファイルでは
Read(読込-r)/Write(書込-w)/Execute(実行-x)の権限を細かく設定することができます。

以下のコマンドを使用してファイルの権限を確認します。
```
ls -l 　　　　
```

以下ではtest.txtというファイルの権限を表示しています。
今回は、naoyukiumedaというユーザーは読込(r), 書込(w)の権限はありますが、実行(x)の権限はないことがわかります。
![chmod1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/439c15b4-1781-42e3-fba0-815843628816.png)


これをchomdコマンドを使用してnaoyukiumedaが実行(x)もできるようにします。

文法は少し複雑になります。
```
chmod 変更対象 変更方法 変更内容 対象ファイル
```
```
chmod u+x test.txt
```
※ユーザー（今回はnaoykiumeda）に対して、実行（x）という権限を、追加（+）しています。

確認すると、実行（x）の権限が付与されていることがわかります。
![chmod2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/abf9c204-784c-88ff-0444-91a4e2fca668.png)

今回の「u+x」という箇所について、ユーザー、実行、追加だけでなく、細かく指定をすることができます。以下が一覧になります。


| 変更対象 | 意味 | 
|:----:|:----:|
| u| ユーザー|
| g| グループ|
| o| その他|
| a| すべて|

| 変更対象 | 意味 | 
|:----:|:----:|
| =| 指定した権限にする|
| +| 権限付与|
| -| 権限の削除|

| 変更対象 | 意味 | 
|:----:|:----:|
| r| 読み取り|
| w| 書き込み|
| x| 実行|



# chown -所有者情報変更-
指定したファイルやフォルダの所有者情報を変更します。

Linuxの中で作成されるファイルではファイルの所有者の権限を細かく設定することができます。

以下のコマンドを使用してファイルの所有者を確認します。
```
ls -l 　　　　
```

以下ではtest.txtというファイルの所有者を表示しています。

ユーザーはnaoyukiumeda, グループはeveryoneになります。
![chown1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/b5497c79-c3a4-5f72-3a23-570975cf98c6.png)

このグループをeveryoneからstaffに変更します。

```
chown : グループ名 ファイル名
```
```
chown :staff test.txt
```
グループ名がeveryoneからstaffに変更になっていることがわかります。

![chown2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/48cfaedd-c985-5f0c-f3a0-b7b429d4cca7.png)

# ps -起動中プロセス一覧表示-
Linux上で現在　起動中のプロセスの一覧を表示する

![ps.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/cb1705a8-cf04-d90d-7d6b-d3196335e8e7.png)

# kill -プロセス終了-
現在　動いているプロセスを終了させることができます。

サーバーの中で処理が重くなってしまっているようなプロセスをkillすることで
メモリやCPUを開放することができます。

```
kill %(バックグラウンドのプロセスの場合必須) プロセス番号
```

以下では、sleep 100, sleep200, sleep 300という3つの処理がバックグラウンドで行われています。


![スクリーンショット 0006-03-24 15.59.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/49e53f4c-e90e-73e3-936a-b2f0ef0b9d6f.png)

この中でsleep 300という処理だけをkillします。
![スクリーンショット 0006-03-24 15.59.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/c61d5263-d725-1b36-cc93-3a50aba3e2b8.png)

sleep 300がkillされて sleep100, sleep200 だけが動いていることがわかります。
![スクリーンショット 0006-03-24 15.59.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722496/24fde933-535b-6fa7-85d9-fee53d2842f1.png)