2025/1/4　学習記録

## 現状：
エンジニアへの未経験転職。
就職先もほぼ決まり、2月からひよこエンジニアに。

2025年は頑張ろうということで、2025年学習記録4日目。

内容は常に書き散らしのメモです、あしからず。

当面の目標：LPIC101,102合格

---

## `SSH`
- `ssh_config`
クライアント側のSSHの設定が記述されている
- `id_rsa`
SSHの秘密鍵
- `id_rsa.pub`
SSHの公開鍵
- `known_hosts`
知られているホスト。事前に登録し、接続時に既に既知のホストであることを確認する。
接続先サーバの情報や送られてきたホスト認証のための公開鍵




## `bash` でのループ文
- 別ファイルの読み込み方
```
while read p;
do
  echo $p
  sleep 0.2
done < 'sample.txt'
```
又は
```
cat 'sample.txt' | while read p;
do
  echo $p
  sleep 0.2
done
```

### `for`文
```
for i in `seq 範囲`;
do
  # 繰り返し処理
done
```
繰り返す範囲には以下のように指定できる。
- 終了値のみ指定：
seq 終了値
- 開始値と終了値を指定：
seq 開始値 終了値
- 開始値、増分（ピッチ）、終了値を指定：
seq 開始値 増分 終了値

その他、`while` や `until` がある。


### `cp`コマンド
- `-p`オプションを使用すると、ファイルの属性ごとコピーされる。


## `rpm`コマンド

Red Hat系のLinuxディストリビューションで使用されるパッケージ管理ツール。
RPMは"Red Hat Package Manager"の略称。

### 主な機能

1. **パッケージのインストール**: システムに新しいソフトウェアをインストールします。
2. **パッケージの更新**: 既存のソフトウェアを新しいバージョンに更新します。
3. **パッケージの削除**: システムからソフトウェアを削除します。
4. **パッケージの照会**: インストールされているパッケージの情報を表示します。
5. **パッケージの検証**: インストールされたファイルの整合性を確認します。

### 使用方法

rpmコマンドは以下の基本的な構文で使用されます：

```
rpm コマンドオプション [その他オプション] [パッケージ名など]
```

### 主なオプション

- `i` または `-install`: パッケージをインストールします[1].
- `U` または `-upgrade`: パッケージをアップグレードします（存在しない場合はインストール）[1].
- `e` または `-erase`: パッケージをアンインストールします[1].
- `q` または `-query`: インストールされたパッケージの情報を表示します[1].
- `V` または `-verify`: パッケージを検証します[1].
- `-qa`インストール済みのすべてのrpmパッケージの一覧を表示する
- `-ivh` rpmパッケージを進行状況や詳細を表示しながらインストールする

### RPMデータベース

rpmコマンドは、システムにインストールされているすべてのRPMパッケージを追跡する「RPMデータベース」を使用します。このデータベースを参照することで、現在システムにインストールされているパッケージやそのバージョンを確認できます[1].

### 注意点

- rpmコマンドは通常、root権限で実行する必要があります。
- パッケージのインストールや削除時に依存関係のエラーが発生することがあります[2].
- CentOSなどで使用されているYumパッケージ管理システムも、基本的にはRPMデータベースを参照しています[1].

### Citations:

[1] https://qiita.com/tanamoru/items/162e421fbaac09ba6d75
[2] https://users.miraclelinux.com/technet/document/linux/training/1_2_2.html
[3] https://eng-entrance.com/linux-package-rpm




## `/proc/ioports`

現在使用されているI/O（Input/Output）ポートのアドレス範囲とそれに対応するデバイスの情報を提供する仮想ファイル。

### 概要

- /procファイルシステムの一部で、メモリ上に作成される仮想的なファイルです[2].
- システムのI/Oポートアドレスの割り当て状況を表示します[4].

### 内容

- デバイスとの入出力通信に使用される現在登録されているポートリージョンの一覧を提供します[5].
- 各行には、I/Oポートのアドレス範囲とそれを使用しているデバイスの名前が表示されます[1].

### 用途

1. デバイスのI/Oポート割り当ての確認
2. ハードウェア設定の診断
3. システムのリソース使用状況の把握
4. トラブルシューティング

### 注意点

- I/Oポートアドレスが重複すると、ハードウェアが正常に動作しない可能性があります[2].
- ファイルの内容は非常に長くなる可能性があります[5].

### Citations:

[1] https://zenn.dev/takuh/articles/7eb93db5c2be7e
[2] https://qiita.com/ss12345/items/b77d813e313a418510f4
[3] https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/145ionirq.html
[4] https://linux.joho.info/command/ioport/
[5] https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/5/html/deployment_guide/s2-proc-ioports
[6] https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/6/html/deployment_guide/s2-proc-ioports
[7] https://qiita.com/nouernet/items/6a40cd3c03ebe058ab39
[8] https://zenn.dev/naotobarca/articles/007322e525d5c6



## `/proc/dma`

現在使用中のDMA（Direct Memory Access）チャネルに関する情報を提供する仮想ファイル。

### 概要

- /procファイルシステムの一部で、メモリ上に作成される仮想的なファイルです[1].
- システムのDMAチャネルの使用状況を表示します[2].

### DMAとは

DMA（Direct Memory Access）は、以下の特徴を持つデータ転送方式：

- CPUを介さずにメインメモリと周辺機器の間で直接的に情報転送を行います[3].
- CPUの負担を軽減する効果があります[3].

### 内容

- 現在使用中のDMAチャネルとそれを使用しているデバイスの情報が表示されます.
- moreやlessコマンドを使用して内容を確認できます[2].

```
例）
# cat /proc/dma
 4: cascade
```

### 用途

1. システムのDMAリソース使用状況の把握
2. ハードウェア設定の診断
3. デバイスドライバの開発やデバッグ

### 注意点

- DMAチャネルは1つのチャネルを複数のデバイスで共有できないため、デバイス間でDMAチャネルが衝突しないように設定する必要があります[3].

### Citations:

[1] https://qiita.com/ss12345/items/b77d813e313a418510f4
[2] https://www.linuxmaster.jp/linux_skill/2012/10/dma.html
[3] https://linux.joho.info/command/direct-memory-access/
[4] https://qiita.com/matuumo/items/e886cf1efe90dd40dee1
[5] https://www.itmedia.co.jp/enterprise/articles/0803/04/news006_2.html


### 閾値
- 反応するかどうかの境目となる値

### ファイルの内容を読み込んでループする
```
    while read p;
    do
      sum=$(( sum + p ))
    done < $fh
    
```

- `while read p:`
読み込んだファイル（`$fh`）の一行の内容が変数pに格納される。
whileループは、readが成功する限り（すなわち、ファイルの終わりに達するまで）繰り返し実行される。
- `done < $fh:`
`< $fh` は、ファイルリダイレクションを使用して、変数fhに指定されたファイルからデータを読み込むことを示す。つまり、ファイルの内容が標準入力として扱われる。
















### 今日はここまで！