Linuxのファイルシステムはツリー構造を採用しており、すべてのファイルとディレクトリは ルートディレクトリ (/)。
Linux ファイルシステムの構造図
graph LR
Root["/ (根目录)"]
subgraph sg_core [核心系统]
Usr["/usr/"]
Boot["/boot/"]
LinkBin["/bin, /sbin, /lib*"]
end
LinkBin -.-> Usr
Root --> Usr
Root --> Boot
Usr --> UsrBin["bin/ (git, python3)"]
Usr --> UsrSbin["sbin/ (nginx)"]
Usr --> UsrLocal["local/ (手动安装)"]
Usr --> UsrLib["lib/ (库文件)"]
subgraph sg_data [配置与数据]
Etc["/etc/"]
Var["/var/"]
Tmp["/tmp/"]
end
Root --> Etc
Root --> Var
Root --> Tmp
Etc --> NginxConf["nginx/"]
Etc --> Systemd["systemd/system/"]
Etc --> Ssh["ssh/"]
Var --> Log["log/"]
Var --> Www["www/"]
subgraph sg_apps [应用软件]
Opt["/opt/"]
Snap["/snap/"]
end
Root --> Opt
Root --> Snap
Opt --> OpenList["openlist/"]
subgraph sg_users [用户空间]
Home["/home/"]
RootHome["/root/"]
end
Root --> Home
Root --> RootHome
subgraph sg_virtual [虚拟文件系统]
DirProc["/proc/"]
DirSys["/sys/"]
DirDev["/dev/"]
DirRun["/run/"]
end
Root --> DirProc
Root --> DirSys
Root --> DirDev
Root --> DirRun
subgraph sg_mounts [外部存储]
Mnt["/mnt/"]
Media["/media/"]
end
Root --> Mnt
Root --> Media
1. コアシステムのディレクトリ
bin & sbin (Binaries)
- 用途 :実行可能なコマンドを格納します。
- 説明:
- bin :すべてのユーザーが利用できる基本的なコマンドを格納しており、例えば
ls,cp,mvなど。 - sbin :主にシステム管理に使用されるコマンドが格納されており、通常は管理者権限を持つユーザーのみが実行可能です。例えば、
reboot,fdiskなど。
- bin :すべてのユーザーが利用できる基本的なコマンドを格納しており、例えば
etc (Etcetera/Configuration)
- 用途 :システムおよびソフトウェアの設定ファイルを保存する。
- 説明 :Nginx の設定、ユーザーアカウント情報、ネットワーク設定などがここに格納されています。このディレクトリ内のファイルを変更すると、システムやサービスの動作に直接影響します。
- 例:私の Nginx 設定ファイルは次の場所にあります。
/etc/nginx/nginx.conf。
- 例:私の Nginx 設定ファイルは次の場所にあります。
lib, lib64 (Libraries)
- 用途 :システム共有ライブラリを格納する。
- 説明 :Windows と同様の
.dllファイル。システム内のプログラムに実行時のサポートを提供します。
systemd (System Daemons)
- 主要な目次:
/etc/systemd/system/ - 用途:執事の本拠地。
- 説明 :ここには「サービス設定ファイル」が格納されています (
.service(ファイル)。- 実行すると
systemctl enable nginxまたはsystemctl start frpsその際、システムは実際にはここから対応するファイルを探し出します。 - docker.service.d/ :Docker サービスのカスタム設定ディレクトリ(プロキシ設定など)。
- 特定のプログラムを起動時に自動的に実行させたい場合は、ここに設定ファイルを配置する必要があります。
- 実行すると
boot (Boot Loader)
- 用途 :起動ファイル。
- 説明 :カーネルの保存 (
vmlinuz) およびブートローダー (GRUB)。通常は手を加える必要はありませんが、このマシンの起動に関する問題を修正する場合を除きます。
2. ソフトウェアはどこにあるのか?(Software Locations)
Linux では、ソフトウェアは Windows のように一か所に集中しておらず、 Program Filesではなく、設置方法に応じてさまざまな場所に分散しています。以下は、私のサーバーにおける実際の状況です:
システム標準 (APT)
Python、Git、Nginx などの基本的なツールのほとんどは、 apt install インストールされたもので、通常は以下の場所に配置されています:
- 実行ファイル:
/usr/bin/python3->/usr/bin/python3git->/usr/bin/git
- プロファイル:
/etc/
Note : 私の Ubuntu 22.04 では、 Usr Merge 構造について、もしうっかり
/bin/下にもそれらが表示されることがありますが、それは正常な動作です(それは~を指しています)/usr/bin/(シンボリックリンク)。
Ubuntu 限定版 (Snap)
もし私が snap install ソフトウェアをインストールしたことがある(例: certbot),それらはここに住むことになります:
/snap/:Snap パッケージを格納する本体。
手動インストール (Manual)
自分でダウンロードしたりコンパイルしたりしたソフトウェアは、通常、以下の場所に保存することをお勧めします:
/opt/:サードパーティ製の大規模ソフトウェアの拠点(例えば/opt/openlist)。/usr/local/bin/:単一ファイルツール(例:frpc),ここに置けば、ターミナルから直接実行できます。
3. ユーザーディレクトリ
root
- 用途 :システム管理者(Root ユーザー)のホームディレクトリ。
- 説明 :一般ユーザーとは異なり、
/home目次:Root ユーザーのホームディレクトリは、ルートディレクトリの直下に位置します(/root)。
home
- 用途 :一般ユーザーのホームディレクトリのベースパス。
- 説明 :システム内の一般ユーザー(例:
admin)のホームディレクトリは通常、/home/用户名。
4. 可変データディレクトリ
var (Variable)
- 用途 :頻繁に更新されるデータファイルを保存する。
- 説明:
- /var/www/html :デフォルトのWebサーバーのドキュメントルートディレクトリ。私のWebサイトのファイルはこのディレクトリに配置されています。GitHub Actionsでは、
rsyncビルド結果を段階的に同期することで、毎回すべての静的リソースを再アップロードする必要がなくなります。 - /var/log :システムおよびアプリケーションのログファイルのディレクトリ。トラブルシューティングを行う際の重要な情報源となる。
syslog: システムの汎用ログ。nginx/: Nginx のアクセスログとエラーログ。auth.log: SSH ログインログ(トラブルシューティングに不可欠)。
- /var/www/html :デフォルトのWebサーバーのドキュメントルートディレクトリ。私のWebサイトのファイルはこのディレクトリに配置されています。GitHub Actionsでは、
tmp (Temporary)
- 用途 :一時ファイルを保存する。
- 説明 :システムやプログラムの実行中に生成される一時データで、通常は再起動後に自動的に削除されます。
5. デバイスと仮想ファイルシステム
dev (Device)
- 用途 :デバイスのファイルディレクトリ。
- 説明 :Linux では「すべてがファイル」であり、ハードウェアデバイスもファイルとしてマッピングされます。例えば、ハードディスクは通常、
/dev/vda。
proc & sys
- 用途 :仮想ファイルシステム。
- 説明 :これらのディレクトリは実際のディスク領域を占有するのではなく、メモリ内のシステム状態の写しです。例えば
/proc/cpuinfoCPUのリアルタイム情報を含みます。
run (Runtime)
- 用途 :実行時のデータ。
- 説明 :システムの実行中に生成される一時的な情報(PIDファイルやソケットファイルなど)を保存し、再起動後に消去される。および
/varその違いは、ここのものがより「瞬間的」だということだ。
6. その他の一般的なディレクトリ
- mnt & media :主に、外部ストレージデバイス(USBメモリやポータブルハードディスクなど)を一時的に接続するために使用されます。
- opt (Optional) :サードパーティ製のオプションの大型ソフトウェアをインストールするために使用します。
- 例:OpenList(クラウドストレージ集約アプリ)は、
/opt/openlist/。
- 例:OpenList(クラウドストレージ集約アプリ)は、
- usr (Unix System Resources) :多数のユーザー向けツール、ライブラリ、ドキュメントが含まれています。名称には「User」とありますが、実際にはシステムレベルの共有リソースが格納されています。
7. 実践記録:スワップ仮想メモリの設定
AstrBot や NapCat を実行している際など、高負荷時のサーバーの安定性を高めるため、手動で 2GB スワップ領域。これは、メモリモジュールのために「緊急用車線」を確保するようなものです。
- ファイルのパス:
/swapfile(ルートディレクトリ内) - 大小:2GB
- 設定手順:
- ファイルを作成する:
sudo fallocate -l 2G /swapfile - 権限の設定:
sudo chmod 600 /swapfile(root のみ読み書き可能) - フォーマット:
sudo mkswap /swapfile - 有効にする:
sudo swapon /swapfile
- ファイルを作成する:
- 設定の永続化:
以下の内容を書き込みました
/etc/fstab、起動時に自動的にマウントされるように設定する:/swapfile none swap sw 0 0 - 検証 :使用方法
free -hSwap 行が 0B ではなくなっていることが確認できます。
付記:Root ディレクトリ内の隠しファイル
使用方法 ls -a このコマンドを実行すると、現在のディレクトリにある隠しファイルを表示できます( . (冒頭)、以下は一般的な隠しファイルに関する説明です:
基本環境
- .bash_history :そのユーザーが端末で実行した過去のコマンドを記録する。
- .bashrc :Bashシェルの初期化スクリプト。エイリアスや環境変数などを定義するために使用され、ターミナルを開くたびに読み込まれる。
- .profile :ログイン時の環境設定ファイル。通常、グローバルな PATH を設定するために使用されます。
アプリケーションの設定
- .ssh :SSH 鍵および設定ファイル(例:
authorized_keys)は、リモートログインの認証において重要なディレクトリです。 - .local :通常、ユーザーレベルのプログラム設定やPythonが含まれます
pipインストールされたパッケージ(root権限を使用せずにインストールした場合)。 - .pip :Pythonのpipパッケージマネージャーの設定ファイルディレクトリ。
- .swas :Alibaba Cloud 軽量アプリケーションサーバー (SWAS) の監視エージェントに関連するデータ。
- .rpmdb :RPM パッケージ管理のデータベースファイル。
よく使うパスのクイックリファレンス (チートシート)
| ミッション | パス | よく使うコマンド |
|---|---|---|
| Nginx の設定 | /etc/nginx/ | nginx -t |
| サービス管理 | /etc/systemd/system/ | systemctl status <name> |
| Python3 | /usr/bin/python3 | python3 --version |
| Git | /usr/bin/git | git status |
| ログを表示する | /var/log/ | tail -f syslog |

