【Linux】AWSでデプロイするためコマンドの復習

## 目次
- Linuxについて
- 基礎的なコマンド
- サーバーの設定
- プロセスの表示
- ターミナル上で複数のコマンドを組み合わせる

AWSでアプリケーションを本番環境にデプロイする際のLinuxコマンドについて復習したことを書いています。

### 【Linuxについて】
Macで何回もコマンドを使用してきましたが、そもそも何なのかすら怪しいと思いここから目を通して学習しなおしました。
Linuxとは、MacなどのOSの種類の一つで、スマホやWEBアプリケーション、ルーターなど多岐に渡って使用されているOS（オペレーティングシステム）です。
OSは、PCなどの基本的なプログラムのことで。キーボード打つと文字が入力される、マウスなどで画面の操作ができるなどの機能をもっています。
OSには、Linux以外にはMac、Windowsがあります。

Linuxの特徴
・オープンソース（コードを公開して誰でも利用、修正、再利用ができる）
・コマンドで操作することができ自動化が容易かつサーバの運用が行いやすい
・ライセンス費用が発生しないものがある
・対応しているソフトウェアが多く、品質の高いソフトウェアを利用できる

パッケージマネージャ
これは、新しいソフトウェアのインストール、アップデート、削除を行うプログラムのことです。
yumコマンドを使用して実行していきます。
・yum install パッケージ名（パッケージのインストール）
・yum update（パッケージのアップデート）
・yum erase パッケージ名（パッケージの削除）
・yum lis（インストールされているものを一覧表示）

### 【基礎的なコマンド】
Linuxに対して作業をする場合は、ターミナルに入力してコマンドを実行します。
この時入力されたコマンドを解釈するソフトウェアのことをシェルと言います。

#### lsコマンド
今いるディレクトリの一つしたのディレクトリやファイルを一覧で表示します。
（ディレクトリはフォルダのことです）
ディレクトリの下に更にディレクトリ、ファイルがあり階層構造になっています。
・.（ドット）カレントディレクトリ（現在作業中）
・.. 親ディレクトリ（階層が一つ上のディレクトリ）
・~ ホームディレクトリ（ターミナル新規立ち上げ時）
・/ ルートディレクトリ（階層構造で一番上のディレクトリ）
#### cpコマンド
ファイルをコピーするためのコマンドです。
cp ファイル名（コピー元） ファイル名（コピー先）
#### mvコマンド
ファイル名の変更、移動を実行したいときのコマンドです。
mv 元のファイル名 新しい名前のファイル名
mv 移動させたいファイル 移動先のディレクトリ
#### mkdir touchコマンド
mkdir ディレクトリ名（一つ下の階層にディレクトリを新規作成）
touch ファイル名（ファイルを新規作成）
#### catコマンド
ファイルの中身を表示、結合させるコマンドです。
cat　ファイル名
cat ファイル名 ファイル名（3つのファイルでも結合可能）
#### tailコマンド
tail -f error.log
このコマンドはerror.logというファイルのエラーログを確認するためのものです。
-fはオプション追加で、新しくエラーが出るたびに自動でエラーログを表示してくれるようになります。エラーログの表示を終了する場合はCarl + Cで終了できます。
#### vi
サーバ上でファイルを編集したい時などエディタが必要になります。
CentOSやAmazonLinuxには標準でviというソフトウェアがインストールされていますので、これを利用していきます。
使い方としては、まずファイルを開きます。
vi ファイル名とターミナルに入力することで起動するこできます。指定したファイルが存在しない場合は、新規で作成されます。
作成された場合は、ターミナルにファイル名New Fileと表示されます。

viエディタには2つのモードがあります。
・通常モード
　：w 作成、編集したファイルの保存
　：q viコマンド終了
　：q！編集した内容を保存しないでviコマンド終了
　：wq 編集した内容を保存してviコマンド終了

・インサートモード
　通常モードでは文字を入力することはできないので、インサートモードにす
　る必要があります。iを押すことでインサートモードになります。
　Escで通常モードに切り替わります。　

viエディタで文字列を検索する場合に使うのが/です。/の後に検索したい文字列を入力します。

u（アンドゥ）は文字を挿入してから挿入後までにファイルに影響を与えた動作を一つ消すことができるものです。

### 【サーバの設定】
Linuxは複数のユーザーが一つのマシンに入って作業することができます。
そのため、自分以外のユーザーには見られたくないファイルなどがある場合閲覧されたり編集されてしまう可能性があります。

ここではユーザーやパーミッションについて書きます。
・rootユーザー
　他のユーザーファイルも含めて、全てにおいて閲覧、編集権限があります。
・一般ユーザー
　許可されているファイルのみ閲覧、編集が可能です。

sudoコマンドは他のユーザーに代わってコマンドを実行することができます。
これをするにはあらかじめsudoが使えるよう許可されている必要があります。

suコマンドは、他ユーザーとしてログインし直すことができます。
ログインし直すには、あらかじめそのユーザーのパスワードを知る必要があります。

パーミッションとは、ディレクトリやファイルに誰がどこまで操作していいのかを許可するための権限情報のことです。
権限には、
・r 読み込み（ファイルの中身を見る権限）
・w 書き込み（ファイルに書きこみできる権限）
・x 実行（ファイルの実行ができる権限）
があります。

ファイルを作成したユーザーを所有者と言いますが、他のユーザーに編集されたくない場合は所有者にだけ書き込み権限を与えておけば、他のユーザーに変更されなくて済むということになります。

権限を確認したい場合は、
ls -l 確認したいファイルなどのパスと入力することで確認することができます。

・chmodコマンド
　アクセス権限を書き換えるためのコマンです。
　chmod 与える権限（r、w、x）ディレクトリ名orファイル名と入力

・chownコマンド
　ディレクトリやファイルの所有者を変更するコマンドです。
　chown 所有者 ディレクトリ名orファイル名と入力

### 【プロセスの表示】
サーバ構築する際に、自分で実行したコマンド確認することがあります。
Linux上でコマンドを実行して処理されていることをプロセスと言います。

プロセスを確認するには、psコマンドを実行します。
コマンドを実行すると一行一行プロセスが表示されます。
いくつかpsコマンドのオプションを下記に記します。

・-a 自分以外のユーザーのプロセスも表示させる
・-r 実行中のプロセスのみ表示させる
・-u ユーザー名 ユーザー名と実行されたプロセスの時刻を確認できる
・aux 実行中のプロセス全ての詳細な情報（CPU使用率など）付きで表示される

### 【複数のコマンドを組み合わせる】
複数のコマンドを組み合わせるには、パイプ処理と呼ばれるものを使い実行します。
パイプ処理とは、｜（shiftキー + ¥）を下記のように入力します。

・最初に実行されるコマンド | 左側のコマンド処理を受けて最終結果を返すコマンド
　ls | grep pのようにディレクトリ内のリストを表示させるlsにpの文字を含むファイルなどを最終的に表示させます。grepコマンドは、特定の文字が含まれるものを抽出するためのコマンドです。

・killコマンド
プロセスidを指定することで、プロセスを終了、強制終了させることができます。

kill プロセスid（プロセス終了）
kill -9 プロセスid（プロセス強制終了）

EC2インスタンス上でアプリケーションの環境構築を行うのにコマンド入力を多用するため復習しました。
引き続き学習継続していきます。