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