２−２．WEB系エンジニアになるためのインプット（Linux基礎）

#はじめに
こちらの記事の続きとなる。
[２−１．WEB系エンジニアになるためのインプット（Linux基礎）](https://qiita.com/Moriyoshi_05/items/fe46c8628166d0d596aa)
Linux基礎を作るためにインプットとそのアウトプットの記事となります。
また、内容が多いため記事を分けて掲載する。

先の記事でも記載しておりますが、教材と環境は下記の通りです。
・教材はUdemy for businessを活用する。
　[【5日でできる】はじめての Linux 入門（LPIC Level1対応）](https://www.udemy.com/course/5dayslinux/)
　（講師：井上 博樹 (Hiroki Inoue)）
・Linux環境（Ubuntu）はAWSのEC2インスタンスを活用する。
　-リージョン：アジアパシフィック (東京)ap-northeast-1
　-AMI：Ubuntu Server 20.04 LTS (HVM), SSD Volume Type
　-インスタンスタイプ：t2.micro

#Linuxの管理業務
##ユーザ・グループ管理
Linuxはマルチタスク・マルチユーザである。
ユーザアカウントとアプリケーションが使用するアカウントがある。

+ /etc/passwd
+ /etc/shadow (sudoとパスワード）

###/etc/passwd
書式は次のようになっている。
**ユーザ名：パスワード（x）：UID：GID：GECOS:ホームディレクトリ：デフォルトシェル**


##アクセス制御
+ 一般ユーザと特権ユーザ（root）
+ グループ

また、パーミッションとはアクセス権限許可設定のことです。
パーミッションの確認は[ls -la]コマンドで確認できる。

r,w,xのアクセス権限設定について0,1で表現するため、下記のように表すことができる。

|アクセス権限|2進数|10進数|
|:---|:---|:---|
|rwx|111|7|
|rw-|110|6|
|-w-|010|4|
|r-x|101|5|

###chownコマンド
所有者の設定変更ができる。
例えば、ファイルの所有者をrootにするコマンドは以下

```Bash:chownコマンド
sudo chown root:root test.txt
```

###chmodコマンド
アクセス権限許可を設定できる。
例えば、ユーザに書き込み権限を付与するコマンドは以下

```bash:chmodコマンド
sudo chmod o+w test.txt
```

##Debian系（Ubuntu）のパッケージ管理
パッケージ導入には３つ方法がある。

|方法|内容|
|:---|:---|
|apt-getコマンド|コマンドラインで一括実行|
|Ubuntuソフトウェアセンター|GUIツールで一括実行|
|debファイルダウンロード＆dpkgコマンド|ダウンロード・インストールを独立|

dpkgコマンドのオプションは下記

```bash:dpkgコマンド
dpkg [オプション] dpkgパッケージファイル.deb
```

|オプション|機能|
|:---|:---|
|-i|インストール|
|-r|アンインストール（設定を残す）|
|-P|アンインストール（設定も削除）|
|-l|インストールパッケージの表示|
|-L|インストールパッケージのファイル一覧表示|
|-s|指定されたパッケージ情報表示|
|-S|インストールされたファイルを検索・表示|
|-E|同じバージョンなら上書きしない|
|-G|新しいバージョンがインストールされていたら上書きしない|

apt-getコマンドのオプションは下記

```bash:apt-getコマンド
dpkg [オプション] dパッケージ名
```

|オプション|機能|
|:---|:---|
|-i|インストール|
|-r|アンインストール（設定を残す）|
|-P|アンインストール（設定も削除）|
|-l|インストールパッケージの表示|
|-L|インストールパッケージのファイル一覧表示|
|-s|指定されたパッケージ情報表示|
|-S|インストールされたファイルを検索・表示|

##RedHat系(CentOS）のパッケージ管理
パッケージ導入には３つ方法がある。

|方法|内容|
|:---|:---|
|yumコマンド|コマンドラインで一括実行|
|パッケージマネージャ|GUIツールで一括実行|
|rpmファイルダウンロード＆rpmコマンド|ダウンロード・インストールを独立|

yumコマンドのオプションは下記

```bash:yumコマンド
yum [オプション] コマンド パッケージ名
```

|コマンド|機能|
|:---|:---|
|install|インストール|
|remove|アンインストール|
|check-update|アップデート対象リストの表示|
|update|パッケージのアップデート|
|list|パッケージの一覧表示|
|repolist|登録リポジトリの一覧表示|
|search キーワード|キーワードのパッケージ検索|

また[yumdownloader]というコマンドにより、ファイルのダウンロードのみを行える。

rpmコマンドのオプションは下記

```bash:rpmコマンド
rpm [オプション] パッケージ名.rpm
```

|オプション|機能|
|:---|:---|
|-i|インストール|
|-U|アップグレード（なければインストール）|
|-F|アップグレード（インストール済の場合）|
|-h|進捗状況の表示|
|--force|インストールを強制|
|--nodeps|パッケージ依存関係を無視|
|-e|アンインストールされたファイルを検索・表示|
|-q|問い合わせ|
|-l|インストールファイルの表示|
|-a|全情報の表示|
|-p|パッケージの指定|
|-f|指定ファイルのパッケージの表示|

##ジョブスケジューリング
予め決めた時間に指定したコマンドを実行できる。

```bash:定期的に実行するプロセス一覧の表示
crontab -e
```

crontabの書式はこちらになる。
【分　時　日　月　曜日　実行ジョブ】
※曜日は0~6で0が日曜日

#ファイルシステム管理
##dfコマンド
```bash:dfコマンド
df [オプション] [ファイル名]
```

|dfコマンドオプション|機能|
|:---|:---|
|-i|iノードの使用状況を表示|
|-h|M、Gを表示|
|-T|ファイルシステムタイプを表示|

##duコマンド
```duコマンド
du [オプション] [ディレクトリ・ファイル]
```

|duコマンドオプション|機能|
|:---|:---|
|-a|ディレクトリと全てのファイルの情報表示|
|-s|合計のみを表示|
|-h|M,Gを表示|

##ファイルシステム管理コマンド
|オプション|機能|
|:---|:---|
|fsck.e2fsck|ファイルシステムチェック。|
|debugfs|ext系ファイルシステムのデバッグ|
|dumpe2fs|ext系ファイルシステムの情報表示|
|tune2fs|ext系ファイルシステムのパラメータ操作|

###fsckコマンド
```bash:fsckコマンド
fsck [オプション] デバイスファイル
```

|オプション|機能|
|:---|:---|
|-t|ファイルシステム（ext2,ext3など）|
|-c|ファイルシステム作成時に不良ブロックを調査|
|-b|バックアップスーパーブロックを指定して復旧|
|-n|コマンド実行確認（処理はしない）|

###dumpe2fsコマンド
```bash:dumpe2fsコマンド
dumpe2fs [オプション] デバイスファイル
```

|オプション|機能|
|:---|:---|
|-b|不良ブロックを表示|
|-h|スーパーブロック情報だけ表示|

スーパーブロックのバックアップ場所は以下の通りである。

|ブロックサイズ|バックアップスーパーブロックの場所|
|:---|:---|
|1024(1kb)|8193|
|2048(2kb)|16384|
|4096(4kb)|32768|

###debugfsコマンド
```bash:debugfsコマンド
debugfs [オプション] デバイスファイル
```

|オプション|機能|
|:---|:---|
|-b|ブロックサイズの適用|
|-c|読み取り専用で開く|
|-R|対話式でなく、指定したコマンドを実行する|
|-n|読み取り|

###debugfs専用コマンド
```bash:debugfsコマンド
debugfs [-Rコマンド] デバイスファイル
```

|コマンド|機能|コマンド|機能|
|:---|:---|:---|:---|
|ls|ファイルリストの表示|chroot|ルートディレクトリ変更|
|cat|iノード情報を表示|pwd|カレントディレクトリ表示|
|cd|カレントディレクトリの変更|close|ファイルシステムクローズ|
|-n|読み取り|quit|debugfsの終了|

###tune2fsコマンド
```bash:tune2fsコマンド
tune2fs [オプション] デバイスファイル
```

|オプション|機能|
|:---|:---|
|-c 回数|ファイルシステムチェック実行までのマウント回数|
|-i d, m, w|ファイルシステムチェック間隔d, m, w|
|-j|ext3ジャーナル（変更履歴）を追加|
|-I|スーパーブロック情報の表示|
|-L ボリューム名|ファイルシステムにボリューム名をつける|

###XFS管理ツール
```bash:XFS管理ツール
XFS（ジャーナリングファイルシステム,~500TB.CentOS7/RHEL7で標準）
```

|ツール|機能|
|:---|:---|
|xfsinfo|XFSファイルシステムに関する情報表示|
|xfs_metadump|XFSファイルシステムのメタデータをファイル保存|
|xfs_mdrestore|xfs_metadumpイメージを復元|

##ディスククォータの管理
クォータとはlinuxでユーザが使えるディスク領域の制御のこと

+ ハードリミット（制限）:物理的に制御
+ ソフトリミット（制限）：警告

###クォータデータベースの作成
quatacheckコマンド（クォータの初期化）

+ -b：バックアップファイルの作成
+ -c：新規作成
+ -v：詳細表示

###クォータ設定
edquato [オプション] ファイルシステム

+ -u：ユーザ名
+ -g：グループ名
+ -t：ソフトリミットの猶予期間

###クォータ有効化
quotaon [option] ファイルシステム
quotaoff [option] ファイルシステム

+ -a：全ファイルシステムの設定を有効化
+ -u：ユーザクォータを有効化
+ -g：グループクォータを有効化
+ -v：メッセージの詳細表示

###クォータ状況の確認
repquotaコマンド
｜repquota [-a] ファイルシステム
　　｜-aオプション：全ファイルシステムを対象
quota {-u, g}：ユーザ・グループのクォータ設定表示

#さいごに
Linuxの基礎はここまでとなる。
次回は、JavaScriptを学んでいく