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" +%s

Linux Distributions(ディストリビューション)

Linux には(おお) くの(こと) なるディストリビューション (distro) があり、それぞれ特徴(とくちょう)(こと) なります:

Debian (けい)

  • Debian - 安定性(あんていせい) 重視(じゅうし)
  • Ubuntu - ユーザーフレンドリー
  • Linux Mint - デスクトップ体験(たいけん)()

Red Hat (けい)

  • RHEL (Red Hat Enterprise Linux) - エンタープライズ()
  • CentOS - RHEL のコミュニティ(ばん)
  • Fedora - 最新(さいしん) 技術(ぎじゅつ)

その()

  • Arch Linux - ローリングリリース、高度(こうど) なカスタマイズ
  • Alpine Linux - 軽量(けいりょう) 、コンテナでよく使用(しよう)
  • Kali Linux - セキュリティテスト専用(せんよう)