Linuxあれこれメモ

# はじめに
- Linuxの初心者向けの基本コマンドなどをメモします（自分用）。

# 動作環境
- Ubuntu 22.04.2 LTS

## 注意点
- とりとめのないメモなのでご容赦ください。

# Linuxインストール手順
インストール手順は下記が参考になりました。
- [【2023年版】UbuntuのUSBインストールメディアを作成](https://rtc-fukushima.jp/technical/6671/)

# Linuxコマンド

## ファイル操作系

|コマンド |説明  |
|---|---|
|ls| ディレクトリの中身の確認する |
|cd| カレントディレクトリを移動する |
|cp| ファイルをコピーする |
|mv| ファイルを移動したり名前を変更する |
|rm| ファイルやディレクトリを削除する |
|pwd| カレントディレクトリを表示する |
|df| ディスクの使用量を調べる |
|du| ファイルの使用量を調べる |
|tar| 複数のファイルをひとまとめにする |
|zip| ファイルをZIP形式で圧縮する |

- カレントディレクトリの中身の確認
```bash:Linux
ls -a  # 隠しファイルを含める
ls -l  # 詳細に表示する
ls -al  # すべてのファイルを詳細に表示する
```

- ディレクトリの変更
```bash:Linux
cd　[移動先パス]
```
- 一つ上の階層へ移動
```bash:Linux
cd ..
```

- ファイルのコピー
```bash:Linux
cp [コピーファイル] [コピー先パス]
```
ファイルのバックアップにも使える
```bash:Linux
cp -rn [コピーファイル] [コピー先パス]

# 例：scannerフォルダごと、外付けUSBメモリに保存する。
cp -rn /home/mkn/scanner /media/mkn/SanDisk
    # -r コピー元にディレクトリを指定した場合、再帰的に（サブディレクトリも含めて）コピーする
    # -n 存在するファイルを上書きしない
cp -rn /home/mkn/scanner "/media/mkn/DUAL DRIVE"
    # ディレクトリにススペースを含む場合はダブルクォーテーションで囲む
```

- ディスク容量の確認
サーバーに自動でデータを蓄えているときなどに逐次確認する際に使う。`-h`でサイズ容量を見やすくする。
```bash:Linux
df -h
```


## ファイル権限系

|コマンド |説明  |
|---|---|
|chmod| パーミッションを設定する |
|chown| 所有者を変更する |
|chgrp| 所有グループを変更する |

- パーミッションの設定（全ユーザーに読み込み権限を付与）
```bash:Linux
chmod +r [ファイル]
```

## ユーザー・グループ系

|コマンド |説明  |
|---|---|
|adduser| ユーザーを追加する |
|deluser| ユーザーを削除する |
|addgroup| グループを追加する |
|delgroup| グループを削除する |
|passwd| パスワードを変更する |
|sudo| rootユーザーでコマンドを実行する |

## ファイル表示・編集系

|コマンド |説明  |
|---|---|
|cat| ファイルの内容を表示する |
|head| 先頭から指定した行数だけ表示する |
|tail| 末尾から指定した行数だけ表示する |
|more| 画面表示したらキー入力を待つ |
|grep| 文字を検索する |
|vi| viエディタを起動する |

## プロセス操作系

|コマンド |説明  |
|---|---|
|ps| 実行中のプロセス一覧を表示する |
|top| 実行中のプロセスのCPUやメモリの利用率を調べる |
|kill| プロセスを終了する |

現在進行中のプロセスの確認
```bash:Linux
ps au
```

## サーバー操作系

|コマンド |説明  |
|---|---|
|ip| ネットワークアドレスを操作する |
|systemctl| サーバーソフトを操作する |
|shutdown| 電源を切る |
|reboot| 再起動する |
|apt| ソフトウェアをインストール・アンインストールする |

- ソフトウェアの始動
```bash:Linux
sudo systemctl start [ ソフト名 ]
```

- ソフトウェアの状態確認
```bash:Linux
sudo systemctl status [ ソフト名 ]
```

- ソフトウェアの自動起動の確認
```bash:Linux
sudo systemctl is-enabled [ ソフト名 ]
```
## 仕様確認系

|コマンド |説明  |
|---|---|
|getconf LONG_BIT| マシーンのビット数を確認する |
|uname -m| システムアーキテクチャを確認する |
|uname -a| OSのバージョンを確認する（少なくともUbuntuでは） |
|hostname -I| ローカル（LAN内）IPアドレスを確認する |
|hostname| ホスト名を確認する |
|ip addr show| MACアドレス（出力結果のlink/etherの次に表示されている）などを確認する |
|curl inet-ip.info| グローバルIPアドレスを確認する（要curlインストール） |



## その他

コマンドのマニュアルを見る
```bash:Linux
man [ コマンド ]
```

# テキストエディターの種類
- vi 
頑固者だが優秀
- Emacs
- nano
- Gedit

## vi
- ファイルの作成・編集
```bash:Linux
vi [ ファイルパス ]
```

|コマンド |説明  |
|---|---|
|i| 編集モードに移行する|
|[Escキー]| コマンドモードに戻る |
|:w| 保存する） |
|:q| 閉じる |
|:wq| 保存して閉じる |

# ファイル転送
- SCP (Secure CoPy)
- WinSCP
大量のデータ転送に便利

注：FTPは通信が暗号化されないので安全とは言えない

# ファイアウォール確認
- ファイアウォールの動作状況を確認する
```bash:Linux
sudo ufw status
```
- ファイアウォールを有効・無効にする
```bash:Linux
sudo ufw enable # 有効化
sudo ufw disable # 無効化
```
- ファイアウォールに特定のポートの通信を許可する
```bash:Linux
sudo ufw allow [ ポート番号 ]/[ tcpまたはudp ]
```

## ポート確認
- ポートの状態を確認する
```bash:Linux
ss -atnu
```
```bash:Linux
netstat -atnu
```
- プロセスが使用しているポートを確認する
```bash:Linux
lsof -i
```

# インターネット接続の不具合
これは稀なことかもしれませんが、私の場合Linuxを再起動させたときにたまにインターネットがつながらなくなります。
NIC（Network Interface Card）を全く認識しない状態になってしまいますが、[こちら](https://qiita.com/khara_nasuo486/items/7eefecad2b4c9bf3a419)を参考にネットワークアダプタを有効化すればよく直ります。
```bash:Linux
sudo ifconfig [ インターフェース名 ] up
```

# おわりに
ざっくばらんなメモですが、参考になれば幸いです。

# 参考文献
https://rtc-fukushima.jp/technical/6671/

https://gihyo.jp/book/2023/978-4-297-13427-3

https://bookclub.kodansha.co.jp/product?item=0000194950

https://atmarkit.itmedia.co.jp/ait/articles/1605/31/news019.html

https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/064dircopy.html

https://www.linuxmaster.jp/linux_skill/2009/02/linux-4.html