Linux - ntuf/Tips GitHub Wiki

Linuxの基本的な構造
Linuxは大きく以下のような構成になっています:

1.カーネル (Kernel)

Linuxの中心部分で、ハードウェアとソフトウェアの橋渡しをします。
メモリ管理、プロセス管理、デバイス制御、ファイルシステムなど、最も低レベルな処理を担当します。
例えるなら「OSの心臓部」です。

2.ユーザーランド (Userland)

ユーザーやアプリケーションが直接触れる部分で、さまざまなプログラムやライブラリが含まれます。
主な構成要素:
シェル: ユーザーがコマンドを入力して操作するためのプログラム(例: Bash)。
ユーティリティ: ファイル操作、ネットワーク設定などのツール群。
デスクトップ環境: GUIを提供するもの(例: GNOME、KDE)。

3.初期化システム (Init System)

Linuxを起動した際に、カーネルから引き継ぎ、システム全体の準備を行うソフトウェアです。
systemdはこの「初期化システム」の1つとして動作します。

systemdはPID(プロセスID)が1のプロセス。


Linuxのシステムの仕組みをWindowsに例えると、以下のように比較できます。
Windowsを使い慣れている視点で見ると、
Linuxの各部分がどのような役割を果たしているかをイメージしやすくなると思います。

1. カーネル(Kernel)
Linux
Linuxカーネルは、ハードウェア(CPU、メモリ、ストレージ、ネットワークカードなど)と
ソフトウェアをつなぐ、Linuxシステムの中核部分です。
メモリ管理、プロセス管理、ファイルシステム操作などを担当します。
Windows
Windowsでいうと、NTカーネルに相当します。Windowsのカーネルも同様に、
ハードウェアリソースを管理し、アプリケーションが動作できる基盤を提供します。
(Windows11でもwindowsNT系としてNTカーネルで動いている)

2. シェル(Shell)
Linux
シェルは、ユーザーがコマンドを入力してシステムを操作するためのプログラムです(例: Bash、Zsh)。
グラフィカルユーザーインターフェース(GUI)がなくても、シェルだけでシステムを操作できます。
Windows
Windowsでのシェルに相当するのは、コマンドプロンプト(cmd.exe)やPowerShellです。
ただし、WindowsユーザーはGUIを使うことが一般的で、LinuxはCLI(コマンドラインインターフェース)が
中心的な役割を果たします。

3. デスクトップ環境(Desktop Environment)
Linux
Linuxでは、デスクトップ環境がカーネルと分離しており、必要に応じて選択可能です。
例: GNOME、KDE、XFCE、MATEなど。
デスクトップ環境は、アイコン、ウィンドウ、メニューなどのグラフィカルな操作を提供します。
Windows
Windowsでは、**エクスプローラー(Windows Explorer)**がこの役割を担っています。
エクスプローラーは固定的で、Linuxのように別の環境に切り替えることはできません。

4. 初期化システム(Init System)
Linux
Linuxでは、システム起動時にまず**initシステム(例: systemd、SysVinit、Upstart)**が動きます。
起動後、必要なサービス(例: ネットワーク、ログ管理、デーモン)を順に立ち上げます。
Windows
Windowsでは、起動時にサービスマネージャーが働き、バックグラウンドで動作するサービス
(例: Windows Update、プリンタサービス)を管理します。
initシステムとWindowsサービスマネージャーは似た役割を持っています。

5. ファイルシステム(File System)
Linux
Linuxは、さまざまなファイルシステム(例: ext4、XFS、Btrfs)をサポートし、
すべてが1つのディレクトリツリー(/)の下にマウントされます。
例: /home、/var、/etc など。
Windows
Windowsでは、ファイルシステムにNTFSやFAT32が使われます。
ドライブレター(例: C:\, D:\)でファイルシステムを分けて扱う点がLinuxと異なります。

6. ソフトウェアパッケージとインストール
Linux
Linuxでは、ソフトウェアはパッケージ管理システム(例: apt、yum、dnf、pacman)を使ってインストールします。
例: sudo apt install firefox
依存関係も自動で解決されるため、効率的です。
Windows
Windowsでは、ソフトウェアのインストールは主に**インストーラー(.exe、.msi)**を使います。
最近では、WindowsストアやWinget(Windows Package Manager)も登場し、
Linuxに近い形でソフトウェア管理が可能です。

7. ユーザー管理
Linux
Linuxは、マルチユーザーシステムとして設計されており、各ユーザーにホームディレクトリ
(例: /home/username)が割り当てられます。
管理者権限を持つ「rootユーザー」が存在します。
Windows
Windowsでもマルチユーザーシステムですが、各ユーザーのデータはC:\Users\ユーザー名に保存されます。
管理者(Administrator)アカウントがrootに相当します。

8. ログと監視
Linux
Linuxでは、システムログは/var/logに保存され、journalctlなどのツールで確認します。
デーモン(バックグラウンドプロセス)もログを記録します。
Windows
Windowsでは、システムログはイベントビューアで確認できます(例: アプリケーションログ、セキュリティログ)。


suコマンド
管理者ユーザになる

シャットダウンコマンド
shutdown -h now hオプションは電源断
ちなみにEC2で実施すると、

shutdown -r now rオプションは再起動

コマンドが見つからない場合は
/sbin/shutdown -h now

grep abc sample.txt | sort
このパイプは入出力プログラム間でやりとりできる

✔ 開始コマンドは stdout を持つもの。
✔ 中継コマンドは stdin を受け取って stdout に出せるもの。
✔ 終端コマンドは stdin を受け取れるもの。
-

■シェルの種類
sh
最も古いシェル。
シェルスクリプトを書く際にはshを利用するのが現在でも一般的
ログインシェルとして使われることはほとんどない

csh
Cシェル。
shと比べて対話型操作ができるようになった
ほとんど使われない

bash
バッシュ。shを基本とした対話型操作を行える。
EC2なんかでもデフォルトのシェル。

tcsh
cshの後継。
FreeBSDでよく使われれる。

zsh
比較的新しいシェル。
人気高い。mac OSではCatalinaがデフォルトのログインシェル。

fish
この中で最も後発。


■コマンドラインの編集
ctrl+B 後退
ctrl+F 前進
ctrl+A 先頭
ctrl+E 末尾
meta(Alt)F 単語ごとに前進
meta(Alt)
B 単語ごとに後退

vscodeでmetaキーを有効にする
VSCodeの設定を開く
メニューバーから「Code」 > 「Preferences」 > 「Settings」を選択するか、Cmd + , を押して設定を開きます。
設定の検索
設定検索バーに「terminal.integrated.macOptionIsMeta」と入力します。
terminal.integrated.macOptionIsMetaの設定を有効にする


■ディレクトリ構造

/bin
Linuxシステムの動作に最低限必要な重要度の高い
実行ファイルを置くためのディレクトリ

/dev
デバイスファイルを置くためのディレクトリ
デバイスファイルは、ハードウェアをファイルとして扱えるように用意されたファイル

/etc
各種アプリケーションの設定ファイルを置くためのディレクトリ
configファイルが置かれる

/etc/ssh/sshconfig ssh接続の設定
/etc/nginx/nginx.conf nginxの設定
/etc/nginx/conf.d/****_nginx.conf nginxの設定
/etc/nginx/ssl/fullchain.pem nginxのsslのpemファイルの置き場

/home
ユーザーごとのホームディレクトリが配置される

/home/ec2-user

/sbin
管理者向けの実行ファイルが配置されている

/tmp
テンポラリ

/usr
各種アプリケーションとそれらのファイルのを置く
内部にサブディレクトリとして、bin,sbin,etcなどを持っている

/var
変化する(variable)データを置くためのディレクトリ
データ、メール、ログなど


tab で補完する
cd /usr/lo
cd /usr/local

ls ba*
baで始まるファイルの一覧が出てくる
ls ba?
baと任意の1文字のファイルが出てくる

ls
-l ファイルの属性も表示される
-a 隠しファイルも表示される
-F ファイルのファイル種別も表示される
-w 30 指定桁数で横幅で表示するここでは30
—quote-name

オプションは-aFのように続けて指定もできる


コマンド
mkdir
ディレクトリを作成する

rm
削除を実施する

rmdir
空のディレクトリを削除する
空でないと削除できない

rm -r
ディレクトリがからでなくても削除される

touch
空っぽのファイルを作成する

cat
ファイルを表示する

less
ファイルをスクロール表示する
f 1画面下にスクロールする
b 1画面上にスクロールする
/を入力すると一番下の行にカーソルが移動して検索が可能になる、nを押すたびに候補が出てくる
q lessを終了する

cp
ファイルディレクトリをコピーする

mv
ファイルを移動する

ln
リンクを張る
ディレクトリに対しては作成できない
異なるディスク間では作成できない
利用方法
 長いパスを省略できる
 異なるバージョンを共存させる

ファイル(名)を探す
find 検索ディレクトリ 検索条件 アクション
-name,-iname

⚠️ **GitHub.com Fallback** ⚠️