60
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

知っておきたいLinuxファイルシステム輪郭

Last updated at Posted at 2015-01-11

#前口上
かなり表面的にさらっと流しています。

昔話になりますが、私が初めてLinux系に触れたのは実は遅めで、高校生の時にUbuntuがリリースされた頃だったと思います。WindowsよりもかこいいOS出たのか、みたいな気持ちでGUI系から始めました。当時は、Macが今ほど日常生活に組み込まれておらず自身もメインでは、C言語用ということもありWindows2000を使い続けていました。確かWindows以外使っている俺すげーみたいな感覚だった記憶があります。どうでもいい話ですが

今回は、作業していて何をするためのフォルダだっけ?と思うことがたまにあり、めんどくさいのでいっそのこと全部まとめておきました。

ファイルをどこに保存するか迷った時はこちらの記事を参考にして頂けたらと思います。
間違っている解釈あるかもしれませんが、その際は教えていただけるとありがたいです。

#輪郭

.sh
.
├── bin
├── boot
├── dev
│   ├── null
│   ├── zero
│   └── tty
├── etc
│   ├── opt
│   ├── X11
│   ├── sgml
│   └── xml
├── lib
├── media
│   ├── floppy
│   ├── cdrom
│   ├── cdrecorder
│   └── zip
├── mnt
├── opt
│   ├── <package>
│   └── <provider>
├── sbin
├── srv
├── tmp
├── usr
│   ├── bin
│   |   └── mh(option)
│   ├── include
│   |   └── bsd(option)
│   ├── lib
│   ├── local
│   |   ├── bin
│   |   ├── etc
│   |   ├── games
│   |   ├── include
│   |   ├── lib
│   |   ├── man
│   |   ├── sbin
│   |   ├── share
│   |   └── src
│   ├── sbin
│   ├── share
│   |   ├── man
│   |   |   ├── man1(option)
│   |   |   ├── man2(option)
│   |   |   ├── man3(option)
│   |   |   ├── man4(option)
│   |   |   ├── man5(option)
│   |   |   ├── man6(option)
│   |   |   ├── man7(option)
│   |   |   └── man8(option)
│   |   ├── misc
│   |   ├── dict(option)
│   |   |   └── words(option)
│   |   ├── doc(option)
│   |   ├── games(option)
│   |   ├── info(option)
│   |   ├── locale(option)
│   |   ├── nls(option)
│   |   ├── sgml(option)
│   |   ├── terminfo(option)
│   |   ├── tmac(option)
│   |   ├── xml(option)
│   |   └── zoneinfo(option)
│   ├── X11R6(option)
│   ├── games(option)
│   └── src(option)
├── var
│   ├── cache
│   ├── lib
│   ├── local
│   ├── lock
│   ├── log
│   ├── opt
│   ├── run
│   ├── spool
│   ├── tmp
│   ├── account(option)
│   ├── crash(option)
│   ├── games(option)
│   ├── mail(option)
│   └── yp(option)
├── home(option)
├── lib(option)
└── root(option)

# option→ユーザの任意で設定する

Filesystem

共有して使う それ以外
不変 /usr, /opt /etc, /boot
可変 /var/mail, /var/spool/news /var/run, /var/lock

古いUNIXのファイルシステムだと/usr/etcどちらにも可変かつ不変なものが含まれていた。
現在の大抵のLinuxだと不変なものは/usrに残り続け、可変なものは全て/varに移動された。
/etcに関しても同様に、ただ長い期間に渡って/varに転送された。

以下にファイルシステムの構造を羅列する。
必須のものは、文字通りなくてはならないディレクトリであって、オプションは任意のディレクトリとなる。今まで必須と思っていたが、オプションだったということもあるかもしれない。
自分のLinux環境と照らし合わせながら確認してみると面白い結果が出るかもしれない。

Root Filesystem

必須

ディレクトリ 説明
bin 必須コマンドバイナリ
boot ブートローダ用の不変ファイル
dev デバイスファイル
etc hostsファイルなど
lib 共有で使う必須ライブラリやカーネルモジュール
media 補助記憶装置のマウントポイント
mnt 一時的なファイルシステム用のマウントポイント
opt 追加されたアプリケーションソフトのパッケージ
sbin 必須システムバイナリ
srv 提供されたサービスのデータ
tmp 一時ファイル
usr 二次階層
var 可変データ

オプション

ディレクトリ 説明
home ユーザのホーム
lib 代替用の必須共有ライブラリ
root ルートユーザ用のホーム

/bin 直下

必須のコマンドバイナリを格納します。この箱にディレクトリを作っているのはあまり見かけないです。

UNIXの設計上小文字を使うという話がありましたが、当然大文字のコマンドはないです。基本コマンドとは言え、日常的に使っている人が多いので解説はいらないでしょう。
##必須

.sh
cat, chgrp, chmod, chown, cp, 
date, dd, df, dmesg, 
echo, false, hostname, kill, 
ln, login, ls, 
mkdir, mknod, more, mount, mv,
ps, pwd, rm, rmdir,
sed, sh, stty, su, sync, 
true, umount, uname

##オプション

.sh
csh, ed, tar, cpio, 
gzip, gunzip, zcat, netstat, ping

#/etc 直下
hostsファイルなどを含みます。

##必須

ディレクトリ 説明
opt /opt用の設定ファイル
X11 X Windows system用の設定ファイル
sgml SGML用の設定ファイル
xml XML用の設定ファイル
conf, configファイルなどが入っていますが、設定ファイルなので説明は割愛します。

#/media 直下
補助記憶装置のマウントポイント。
##オプション

ディレクトリ 説明
floppy フロッピードライブ
cdrom CD-ROMドライブ
cdrecorder CD書き込み
zip Zipドライブ

#/opt 直下
追加されたアプリケーションソフトのパッケージを置く。
##必須

ディレクトリ 説明
<package> 不変パッケージのオブジェクト
<provider> LANANAが提供するプロバイダー名

#/sbin 直下
システム復元、回復、修復用の不可欠なバイナリが格納されている。
##必須

.sh
shutdown

##オプション

.sh
fastboot, fasthalt, fdisk, fsck, fsck.*, 
qetty, halt, ifconfig, init, 
mkfs, mkfs.*, mkswap, 
reboot, route, swapon, swapoff, update

#/usr 直下
複数のマシンで共有して使い、読み取り専用となる。
##必須

ディレクトリ 説明
bin 大部分のユーザコマンド
include Cプログラムによるヘッダファイル
lib ライブラリ
local ローカル二次階層
sbin 非重要なシステムバイナリ
share アーキテクチャ非依存データ
##オプション
ディレクトリ 説明
:--: :--:
X11R6 X Window Systemのバージョン11 リリース6
games ゲームや教育用のバイナリ
lib 大体フォーマットライブラリ
src ソースコード

#/usr/bin 直下
大部分のユーザコマンド
##オプション

ディレクトリ 説明
mh UNIX環境で動く想定のmailインタフェース
.sh
perl, python, tclsh, wish, expect

#/usr/include 直下
Cプログラムによるヘッダファイル
##オプション

ディレクトリ 説明
bsd OS BSDの互換ファイルを入れる箱

#/usr/local 直下
インストールソフトはこちらに入るのが基本
##必須

ディレクトリ 説明
bin ローカルバイナリ
etc ローカルバイナリ用ホスト固有のシステム設定
games ローカル用ゲームバイナリ
include Cヘッダファイル
lib ローカル用ライブラリ
man ローカル用オンラインマニュアル
sbin ローカル用システムバイナリ
share ローカル用アーキテクチャ非依存データ
src ローカル用ソースコード

#/usr/share 直下
アーキテクチャ非依存データ
##必須

ディレクトリ 説明
man オンラインマニュアル
misc その他のアーキテクチャ非依存データ
##オプション
ディレクトリ 説明
:--: :--:
dict 単語リスト
doc その他のドキュメント
games /usr/games用の不変データファイル
info GNU情報システムのプライマリディレクトリ
locale ロケール情報
nls ネイティブ言語サポート用のメッセージカタログ
sgml SGMLデータ
terminfo ターミナル用の制御文字用のDB
tmac 文書整形コマンド
xml XMLデータ
zoneinfo タイムゾーン情報と設定

#/usr/share/dict 直下
##オプション
よくパスワードの攻撃はこっから使われてるとか言われてますよね。

ディレクトリ 説明
words 英語の単語リスト

#/usr/share/man 直下
オンラインマニュアル
##オプション

ディレクトリ 説明
man1 ユーザプログラム
man2 システム呼び出し
man3 ライブラリ呼び出し
man4 特殊ファイル
man5 ファイルフォーマット
man6 ゲーム
man7 その他
man8 システム管理者

/var 直下

可変データ
##必須

ディレクトリ 説明
cache アプリケーションキャッシュデータ
lib 可変状態情報
local /usr/local用の可変データ
lock ロックファイル
log ログ・ファイルとそのディレクトリ
opt /opt用の可変データ
run 実行中プロセスの関連データ
spool アプリケーションの構成データ
tmp システムの再起動の間保持される一時ファイル
##オプション
ディレクトリ 説明
:--: :--:
account プロセスアカウンティングログ
crash システムクラッシュダンプ
games 可変ゲームデータ
mail ユーザのメールボックスファイル
yp ネットワーク情報サービスのDBファイル

#別館
##/bin
setserialを追加する
##/dev

ディレクトリ 説明
/dev/null スペシャルファイルで、ここに吐出されたものを全て捨てる。よくバッチファイルなどで要らないエラーログをここに吐いてると思う。
/dev/zero dev/nullと同じ様なものだが、違うのがパーティションの全データを破壊する時にこいつinputにして突っ込んだり
/dev/tty 制御端末

#後口上
最後の方適当にまとめてしまいました。一旦まとめただけで、説明を省いてしまったのでわかりづらいかもしれません。


この記事は、以下を読み引用しています。
FHS2.3

60
69
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
60
69

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?