【Linux】半年前取得したLPIC-1の復習をしてみた

## はじめに
　こんにちは、Tunです。
今回は、Linuxの復習をしたくなったので、一旦Linuxに移行したいと思います。
　早速見ていきましょう:point_down:

## Linuxとは何ぞや:thinking:
　Linuxは、WindowsやMac OSのように**OS**の一種です。
コンピュータを操作する基本のソフトウェアである他に、サーバ用から学習用、デスクトップ用など幅広く使用されているのが特徴です。

### Linuxの特徴
- **オープンソースであり、誰でも自由に無償で利用できる**
- **品質の高い多くのソフトウェアが利用できる**
- **世界中でサーバ用途として広く利用されており、信頼性が高い**
- **操作を自由化するための仕組みが用意されており、サーバの運用が行いやすい**

　以上の点がLinuxの特徴であり、WindowsやMac OSにはない多くの利点があります。
　また、学習用やプログラミング環境としても以下の優秀な点が挙げられます。

- **環境が無償であり、プログラミング環境を整えやすい**
- **オープンソースで自由に利用できるためブラックボックス部分がなく、OS内部の動作まで確認できる**

## Linuxの欠点
　多くの利点を持つLinuxですが、欠点もあります。:rolling_eyes:

　Linuxは商用アプリケーションがあまり存在せず、Microsoft officeが使えない点や、画像、動画などのマルチメディア系のファイルの編集には不向きな点、ほとんどが英語であり、日本語対応もあるがソフトウェアによっては文字化けすることもある点、があります。

　それでも、Linuxは**便利**で**楽しい**ということは変わりはありません。

## ディスとリビューションとは
　本来のLinuxとは**Linuxカーネル**のみを指す狭義の言葉であり、OSの中核となる部分、すなわちコンピュータのハードウェア制御を行うソフトウェアのみを指します。それだけでは、ユーザを利用することができないため、Linuxカーネルに加え基本的なコマンド群やアプリケーションなどを含めて、ユーザがそのまま利用できるようにパッケージングしたものが、広義の**Linux**であり、これが**ディストリビューション**と言います。現在の主流のディストリビューションは、`Red Hat`系と`Debian`系があります。

|系統|ディストリビューション|
|:---|:---|
|Red Hat系|Red Hat Enterprise Linux、CentOS、Fedora|
|Debian系|Debian GNU/Linux、Ubuntu|

　今、自分が使用しているディストリビューションは`Cent OS`で、学生時代やLPIC学習の動作確認用にLinux環境を構築していたのもあり、そのまま使っています。
## ログイン ログアウト シャットダウン
#### ログイン
- ログインはインストール時に設定した、ユーザ名とパスワードを入力しますが、パスワードを入力しても**ショルダーハッキング**対策で表示されませんので注意してください。
```:テキストログイン
localhost login: tun
Password: 　　←ここに入力しても何も表示されない
```
:::note
**ショルダーハッキング**
・パスワードなど重要な情報（パスワードやクレカの番号など）を入力している隙を狙って、背後から覗き見すること。社内社外問わず、重要な情報を入力する場合は、細心の注意を払わなければなりません。
:::
　ログインが完了すると、以下のようにシェルが起動してプロンプト`$`が表示されるようになります。　
```:プロンプトの表示
[tun@localhost] $　　　　　←プロンプトの後にコマンドを入力してEnterを押すと処理が開始
```
#### ログアウト
- ログイン作業の逆がログアウトです。Linuxにおいて、ログアウトをせずにそのまま放置すると、作業は続行している状況のままです。このまま放置していると、無駄なリソースを使用する他、誰かにログイン後の画面を不正利用される可能性がありますので、Linuxで作業が終了したら、必ずログアウトをしましょう。

　ログアウトの方法は2パターンあります。以下、例を見てみましょう。
```:exitでログアウト
$ exit ←コマンド記入がEnterを押す
```
- `exit`は元々、現在のシェルを終了させる意味のコマンドですが、シェルを終了させることで自動的にログアウトされます。

```:logoutではログインシェル以外ログアウトできない
$ logout
bash: logout: ログインシェルではありません: `exit'を使用してください
```
- `logout`では、現在のシェルが**ログインシェル**の場合でしか作動しません。ですので、基本的にログアウトする際には`exit`を使用しましょう。

#### シャットダウン
- コンピュータの電源を切るために、OSを完全に停止させること**シャットダウン**と言います。誰もログインしていない状態でも、バックグラウンドで様々なプログラムが動いていますので、シャットダウンをせずに電源を切るようなことはしないようにして下さい。

　Linuxのシャットダウンを行うには、`shutdown`コマンドを使います。しかし、このコマンドは`root`という管理者権限を持った**スーパーユーザ**でしか利用できません。この`root`ユーザに切り替えるためには、2つの方法があります。

　1つ目は、すでにログインしているならば、ログアウトして、ユーザ名にroot、パスワードにインストール時に設定したrootのパスワードを入力してログインする。
　2つ目は、`su`コマンドを利用してログインする。

　以下、`su`コマンドを利用した方法を見てみましょう。
```:suでrootユーザにログイン
[tun@localhost ~]$ su
パスワード:        ←rootパスワードを入力
[root@localhost tun]#
```
　rootユーザに切り替わると、プロンプトが`$`から`#`に変わります。この状態で、`shutdown`コマンドを実行すると電源が切れます。

```:example
# shutdown -h now  ←シャットダウン
# suutdown -r now  ←再起動（Reboot）
```
　また、以下のようなエラーが出た場合には、フルパスで指定してあげると実行できます。
```:エラーの対処法
# shutdown -h now 
-bash: shutdown: コマンドが見つかりません

# /sbin/shutdown -h now  ←フルパスで指定
```
:::note warn
**Linuxとシャットダウン**
・Linuxは、ログアウトはするがシャットダウンはしないというシーンが多くあります。例えば、業務用サービスを提供しているLinuxサーバでは、何十年もの間シャットダウンしていないということは決して稀ではありません。Linuxでシャットダウンを行う場合は、メンテナンスや障害対応など必要最低限のシーンに限られます。
　学習用の環境では何回でもシャットダウンを行っても良いですが、現場のシャットダウンという行為は、とても**重い**操作であり軽々しく行うものではないということ念頭に置いて下さい。
　シャットダウンしてしまうと、それを利用しているユーザに多大なる被害が発生しますので、万が一間違ってシャットダウンしてしまった場合は、直ちに上司等に報告し、対応することが大切になります。
:::

## まとめ
 LPICを取得して以来、ほぼ触れてこなかったLinuxですが、改めてターミナルにコマンドを打ってみると楽しいものです。また、次回も色々とLinuxについてつらつらと書き記していきたいと思います。:wave:

## 参照
- [新しいLinuxの教科書](https://www.amazon.co.jp/新しいLinuxの教科書-三宅-英明/dp/4797380942/ref=mp_s_a_1_2?adgrpid=115136155182&hvadid=651192421586&hvdev=m&hvlocphy=20636&hvnetw=g&hvqmt=e&hvrand=2133779775151697665&hvtargid=kwd-1185812886385&hydadcr=10874_13606166&keywords=linux+の+教科書&linkCode=plm&qid=1683422250&sr=8-2)