Linux 概要
Linux 作業 システム基礎 概念
なぜコマンドラインを使 うのか?
より強力 な制御 能力
コマンドラインを習得 すると、システムに対 してより強力 な制御 が可能 になります コマンドを実行 して権限 の変更 、隠 しファイルの表示 、データベースとの対話 、サーバーの起動 、プロセス管理 などができます
より高速
基本 コマンドを覚 えれば、GUI より遥 かに速 くタスクを実行 できます
多 くのタスクを自動化
コマンドを使用 して、固有 の名前 を持 つ 1000 個 のファイルを作成 できます
どこでも使用 可能
コマンドラインは様々 な OS で使用 できます:
- Linux
- macOS
- Windows (WSL/PowerShell)
ほぼ必須 条件
多 くの職種 でコマンドラインスキルが必要 :
- Web Developer
- Data Scientist
- DevOps
- System Admin
- Security Admin
- ML Engineer
クラウドコンピューティングに必須
ほぼすべてのクラウドサービスは、コマンドラインでの管理 とデプロイが必要 です
Unix の歴史
Unix は 1960 年代 に Bell Labs の研究者 グループ(Ken Thompson、Dennis Ritchie など)によって開発 されました。 マルチユーザー、マルチタスク OS で、サーバー、ワークステーション、組 み込 みシステムで広 く使用 されています。
GNU/Linux とは?
Linux システムは 3 つの主要 な部分 に分 かれます:
Hardware(ハードウェア)
メモリ、CPU、ハードディスクなど、システム動作 に必要 なすべてのハードウェアデバイス。
Linux Kernel(カーネル)
カーネルは OS の中核 部分 です。ハードウェアを管理 し、システムとの対話 方法 を指示 します。
User Space(ユーザー空間 )
ユーザーがシステムと直接 対話 する場所 です。
Shell
Shell はコンピュータと OS のインターフェースです。 Shell は OS のサービスをユーザーや他 のプログラムに公開 します。 Shell はコマンドを受 け取 り、OS に実行 させます。
Terminal
Terminal は shell を実行 するプログラムです。 元々 ターミナルは物理 デバイスでしたが、現在 はソフトウェアターミナルを使用 します。
Bash
デフォルト shell: Bash
Bourne-Again SHell
Bash は最 も広 く使用 されている Unix shell とコマンド言語 で、Brian Fox が GNU プロジェクト向 けに開発 しました。
コマンドタイプ
Internal or Built-in Commands
shell に組 み込 まれたコマンド:
echo- テキストを表示cd- ディレクトリを変更pwd- 現在 のディレクトリを表示set- shell オプションを設定export- 環境 変数 を設定
External Commands
独立 した実行 ファイル:
mv- ファイルを移動 /名前 変更date- 日付 時刻 を表示uptime- システム稼働 時間cp- ファイルをコピー
ライブラリタイプ
Static Library(静的 ライブラリ)
- ファイル形式
:
*.a - コンパイル時 にプログラムにリンク
- 実行 ファイルサイズが増加
- 実行 時 にライブラリを探 す必要 なし
Dynamic Library(動的 ライブラリ)
- ファイル形式
:
*.so(Shared Object) - 実行 時 にロード
- 実行 ファイルサイズが減少
- 複数 のプログラムが同 じライブラリを共有 可能
Dynamic Linking(動的 リンク)
コードをネイティブ実行 ファイルにビルドする際 、一部 の関数 やライブラリは実行 時 に動的 リンクが必要 になることがあります。
これは、一部 の関数 やライブラリの正確 なメモリ位置 やバージョン番号 などの情報 が runtime でしか確定 できないためです。
Epoch Time
Unix epoch (Unix time / POSIX time / Unix timestamp) は 1970 年 1 月 1 日 (UTC/GMT 午前 0 時 ) からの経過 秒数 で、うるう秒 は含 みません。
ISO 8601 形式 :1970-01-01T00:00:00Z
Epoch Time の確認
# 現在の epoch time
date +%s
# epoch time を読みやすい形式に変換
date -d @1609459200
# 日付を epoch time に変換
date -d "2021-01-01" +%sLinux Distributions(ディストリビューション)
Linux には多 くの異 なるディストリビューション (distro) があり、それぞれ特徴 が異 なります:
Debian 系
- Debian - 安定性 重視
- Ubuntu - ユーザーフレンドリー
- Linux Mint - デスクトップ体験 が良 い
Red Hat 系
- RHEL (Red Hat Enterprise Linux) - エンタープライズ向 け
- CentOS - RHEL のコミュニティ版
- Fedora - 最新 技術
その他
- Arch Linux - ローリングリリース、高度 なカスタマイズ
- Alpine Linux - 軽量 、コンテナでよく使用
- Kali Linux - セキュリティテスト専用