ファイルシステムと書庫

INPUT · スライド

ルートからの地図(`/` の下)

01 / 08

いちばん上は / だけ

Windows や Mac だと、ドライブや「マイドキュメント」から始まるよね。Linux は違うんだ。

始まりは / ひとつだけだよ。

/├── bin      コマンド├── etc      設定├── home     人の部屋├── tmp      一時おき場├── var      増えていくもの└── ...

この /ルート(root)と呼ぶよ。木の根っこだね。

あなたのいる /home/manabiya も、この木の枝の1本なんだ。

/  →  home  →  manabiya  →  memo.txt

USB メモリを差しても、新しいドライブ名は増えないよ。/mnt のどこかに枝として生えるんだ。世界が1本の木でできている、というのが Linux の考え方だよ。

02 / 08

覚えるのは6つで足りる

ls / で見ると20個ほど並ぶけれど、最初に覚えるのはこれだけだよ。

場所何が入っているか
/binコマンドlscat の本体)
/etc設定ファイル
/home人ごとの部屋
/tmp一時おき場(消えてよいもの)
/var増えていくもの(ログなど)
/procいまの状態(ディスクに無い)

読み方も付けておくね。

/bin   ビン(binary = 機械語のプログラム)/etc   エトセトラ(その他、から来た)/var   バー(variable = 変わるもの)/proc  プロック(process から)

この並びはどの Linux でもだいたい同じだよ。だから初めて触るサーバーでも、設定を探すなら /etc を見ればいい。一度覚えると、ずっと使える知識なんだ。

03 / 08

残りの場所も一度だけ見ておく

残りは「そういうものがある」と知っておくだけで十分だよ。

場所何のためか
/sbin管理者用のコマンド(system binary)
/usrあとから足したプログラム(/usr/bin など)
/libプログラムが共通で使う部品
/dev装置(ディスク・画面・/dev/null
/rootroot さんの部屋(/ とは別物)
/mnt /media外の入れ物をくっつける場所
/sysカーネルの設定つまみ
/opt大きなソフトを丸ごと置く場所

混ざりやすいのが2つあるよ。

/       ルート(いちばん上)/root   root さんのホーム(ただの部屋)

名前が似ているだけで、まったく別の場所だね。

/bin    もともと入っている道具/usr/bin あとから入れた道具

この区別は昔のディスク事情から来ていて、今ではどちらもコマンド置き場と思って構わないよ。

04 / 08

/tmp は誰でも書ける特別な場所

/tmpls -ld で見ると、見覚えのある形が出てくるよ。

~ $ ls -ld /tmpdrwxrwxrwt    3 root root  80 /tmp         t(sticky bit)

章6の最後でやった t だね。「誰でも書けるが、自分のものしか消せない」という印だよ。

だから /tmp は、プログラムが作業用のファイルを置く場所として使われるんだ。

誰でも書ける      → 権限で困らない自分のしか消せない → 他人のを壊せない再起動で消える     → 片づけを忘れても平気

覚えておくと便利だよ。書く場所に困ったら /tmp だね。

ただし「消えてもいいもの」だけにしてね。大事なファイルを置くと、いつか消えて泣くことになるよ。

05 / 08

コマンドもただのファイル

この章でいちばん驚くのはこれかもしれないよ。/bin/ls を見てみよう。

~ $ ls -l /bin/lslrwxrwxrwx  1 root root  7  /bin/ls -> busybox

lsbusybox へのリンクだったんだ(リンクは次の回でやるからね)。

~ $ ls -l /bin/busybox-rwsr-xr-x  1 root root  750792  /bin/busybox

この環境では lscatgrep も、すべて busybox という1つのプログラムだよ。呼ばれた名前を見て、中で振る舞いを変えているんだ。小さな機械に入れるための工夫だね。

x の代わりに s が立っているのも見えるかな。章6でやった setuid だよ。

大事なのはここだね。

> コマンドは魔法ではなく、/bin に置かれたファイル

章3で which ls を打ったのを覚えているかな。あのとき出た /bin/ls は、本当にそこにあるファイルの場所だったんだよ。

06 / 08

/proc はディスクの上に無い

/proc はいちばん不思議な場所だよ。章8で /proc/PID/stat を読んだね。

~ $ cat /proc/uptime10.03 8.86~ $ cat /proc/uptime15.42 13.21    ← 値が変わった!

読むたびに中身が変わるでしょう。ファイルの形をした「いまの状態」なんだ。カーネルがその場で作って見せているだけで、ディスクには何も無いんだよ。

読めるものの例を挙げるね。

/proc/uptime      動きはじめてからの秒数/proc/cpuinfo     CPU の情報/proc/meminfo     メモリの情報/proc/version     カーネルの版/proc/PID/stat    そのプロセスの状態

どれも cat で読める。専用の道具が要らないのがうれしいところだね。

これが「Linux では何でもファイル」という言い方の意味だよ。装置も状態も、ファイルとして開いて読める形にしてある。だから catgrep がそのまま使えるんだ。

07 / 08

道に迷ったら / から辿る

深い場所へ移ったあとで、帰り方を覚えておこう。

cd ~      自分の部屋へ(何も付けなくても同じ)cd /      いちばん上へcd ..     1つ上へcd -      **直前にいた場所へ戻る**

最後の cd - は便利だよ。

~ $ cd /usr/bin/usr/bin $ cd -/home/manabiya~ $

遠くを見に行って、すぐ戻ってくるときに使うんだ。「行って帰る」を2文字でできるわけだね。

そして絶対パスと相対パスも、この地図で見ると分かりやすいよ。

/etc/passwd    どこにいても同じものを指す(絶対)passwd         いまいる場所の中の passwd(相対)

/ で始まるかどうかだけの違いだね。章1でやったことが、地図の上で意味を持ってくるよ。

08 / 08

さあ、打ってみよう

この回で使うのはこれだけだよ。

ls /              地図を見るls -ld 場所       その場所そのものを1行で見るls /etc           設定の一覧cat /proc/uptime  いまの状態を読むwhich コマンド    道具の居場所を知るcd -              直前の場所に戻る

-d の意味をもう一度だけ言うね。

ls /tmp     /tmp の中身を並べるls -ld /tmp /tmp そのものを1行で見る

中に入らずに、その入れ物自身を見る印だよ。権限や持ち主を確かめるときに使うね。

入れない場所もあるからね。/root を覗こうとすると断られるよ。断られるのは失敗ではなくて、そういう決まりになっているということだよ。

では、地図を自分の手で確かめよう。