ls -al /devで表示されるbrw-rw---- crw-rw----について
/dev内でls- alを実行すると謎の属性が表示された。以下適当に抜粋。
$ ls -al /dev 合計 8 crw-rw---- 1 root root 14, 10 11月 4 01:45 dmfm crw-rw---- 1 root root 14, 9 11月 4 01:45 dmmidi crw------- 1 root root 14, 3 11月 4 01:45 dsp brw-rw---- 1 root floppy 2, 0 11月 4 01:45 fd0 brw-rw---- 1 root floppy 2, 84 11月 4 01:45 fd0u1040 brw-rw---- 1 root floppy 2, 88 11月 4 01:45 fd0u1120 srwxrwxrwx 1 root root 0 11月 4 01:46 gpmctl brw-r----- 1 root disk 3, 0 11月 4 10:45 hda brw-r----- 1 root disk 3, 1 11月 4 01:45 hda1 brw-r----- 1 root disk 3, 2 11月 4 10:45 hda2 brw-r----- 1 root disk 3, 3 11月 4 10:45 hda3 crw------- 1 root root 10, 228 11月 4 01:45 hpet prw------- 1 root root 0 11月 4 01:45 initctl drwxr-xr-x 2 root root 160 11月 4 01:45 input crw------- 1 root root 1, 11 11月 4 01:45 kmsg srw-rw-rw- 1 root root 0 11月 4 01:45 log brw-r----- 1 root disk 7, 0 11月 4 01:45 loop0 brw-r----- 1 root disk 1, 2 11月 4 10:45 ram2 brw-r----- 1 root disk 1, 3 11月 4 10:45 ram3 brw-r----- 1 root disk 1, 4 11月 4 10:45 ram4 crw-rw---- 1 root tty 4, 37 11月 4 01:45 tty37 crw-rw---- 1 root tty 4, 38 11月 4 01:45 tty38
こりゃなんじゃってことで調べると、どうやらスペシャル・ファイルと呼ばれるものらしい。
スペシャル・ファイルとは、デバイスノードとも呼ばれ、主にHDDやメモリやプリンタやUSBメモリが扱われる。Windowsではマウントが完了したオブジェクトはマイコンピュータに表示されるのに対して、Linuxではls -al で普通のファイルと一緒に見えてしまうので(慣れるまでは)分かりづらいけど、他のファイルと同じように扱えるので、シェルから操作しやすい利点がある。
こういう
ってフラット感がLinuxだよななぁ。
※Windowsでもmountvolっていうデバイスマウントコマンドがあるけど、実用ではほとんど使わない。
キャラクタデバイスとブロックデバイス
スペシャルファイルはキャラクタデバイスとブロックデバイスに分類される。
- キャラクタデバイス
- デバイスに向けてシーケンシャルにデータを送信するタイプ。リモート端末とか。バッファを持たず逐次書き込み。
- ブロックデバイス
- ランダムアクセス可能なデバイス。HDDとかメモリとかが代表例。バッファを持ち、バッファがデバイス側で指定されたブロックサイズ(16kとか)に到達したら書き込みを行う。
俺はこの説明でイメージ掴めるけど、不慣れな人には厳しいような…。
/dev以下のファイル
/dev以下のファイルの用途が気になるところだけど、たくさんありすぎるので一部だけ調べてみます。
/dev/hda、/dev/sda
/dev/hdaはIDEデバイス、/dev/sdaはSCSIデバイスです。主にHDDがマウントされることが多いですね。ただ/dev/sdaはUSB接続のディスク装置も使用するし、9月版 IDEハードディスクが「/dev/hda」ではなくなる日(1/2) − @ITの通り、ドライバによってはIDEデバイスも/dev/sdaにマウントするようです。なお、命名法則は
- IDEデバイス(/dev/hda、/dev/hdb、/dev/hdc、/dev/hdd)
となります。物理デバイス認識の順番で3文字目がa,b,c…と変化してゆき、論理パーティションの順番で4文字目が1,2,3…と変化します。
http://www.miraclelinux.com/technet/document/linux/training/1_3_1.html
/dev/zero
/dev/zeroは読み出すと"「 0」(\0、NULL)"を返す特殊ファイルです。
dd if=/dev/zero of=/dev/hda1 とかするとHDDのデータが全消去されます
Linux(UNIX)WR}hÉæéf[^Á