デバイススペシャルファイル
アイディア
全てのI/Oをファイルに行う→I/Oの抽象化
https://gyazo.com/04788f1e2e89f54ea30f4bd471e812a5
裏側にデバイスが存在しているもの(/dev/sda)もあれば、裏側に対応するデバイスがないようなもの(/dev/null)もある。
/devディレクトリ配下
デバイスを抽象化するこのアイデアによって、 I/O のデバイスもすべてファイルと同じ統一したインタフェースで扱えるようになりました。 例えばハードディスクや端末といったものに対して、プロセスから直接ハードウェアにアクセスする必要はありません。 I/O のスペシャルファイルを経由してアクセスします。 ディレクトリ /dev 以下に用意されているスペシャルファイルがデバイスへのインタフェースです。
端末もスペシャルファイルとして抽象化されていて、たとえば現在使っている端末は /dev/tty のように見えます。 ですから、ここに文字をリダイレクトするとスクリーンにその文字が出力されます。
ファイルシステム内に保持している情報は「デバイス番号」という管理情報のみである
操作の影響はOSのデバイスドライバを通じてファイルシステムの外(実際のデバイスなど)に反映される
https://gyazo.com/41e707b3b83e4ebfaf6296ab0a1a218a
分類
ブロックスペシャル(b)
/dev/sda...
ファイルシステムを構築できるようなやつ
キャラクタスペシャル(c)
/dev/null,/dev/pts/0...
ブロック以外の全て
例
/dev/sda
ハードディスク、SSDなど
/dev/tty
仮想端末
/dev/sda
scsiハードディスク
Linuxのカーネルが認識した順番に /dev/sda から /dev/sdb 、 /dev/sdc となります。 /dev/sda はハードディスク全体で、 sda 上にパーティションが設定されていれば /dev/sda1 、 /dev/sda2 ...となります。
/dev/null
何にも繋がっていないデバイスファイル
cat foo > /dev/null
nullに吸い込まれるだけでどこにも送信されない
出力結果を破棄したい場合
/dev/random , /dev/urandom
乱数を返す
dd bs=10M count=1 if=/dev/urandom of=hoge.txt
10MB分の乱数データのファイル
/dev/zero
ゼロを返す
/dev/eth0
/dev/eth1,/dev/eth2と続く
Lanポート、NICとかのネットワークインタフェースのためのデバイス用のファイル
理由は単純に1つのイーサーネットのデバイスが、1つのIPアドレスを持つというわけではなくなったからです。 現在はハードウェアに1つのイーサーネットのポートしかなくても、 オペレーティングシステムとして、その1つのポートに複数のIPアドレスを割り当てることができます。
今はなくなっているらしい
参照