![UNIXシステムが/ dev / * [duplicate]にそれほど多くの[0バイト]ドライブを必要とするのはなぜですか?](https://linux33.com/image/35372/UNIX%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%8C%2F%20dev%20%2F%20*%20%5Bduplicate%5D%E3%81%AB%E3%81%9D%E3%82%8C%E3%81%BB%E3%81%A9%E5%A4%9A%E3%81%8F%E3%81%AE%5B0%E3%83%90%E3%82%A4%E3%83%88%5D%E3%83%89%E3%83%A9%E3%82%A4%E3%83%96%E3%82%92%E5%BF%85%E8%A6%81%E3%81%A8%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F.png)
だから最近尋ねました。この問題、その結果、次のコマンドを実行するようになりました。
$ du -sk /dev/*
次のように約353個の個別項目が出力されます。
0/開発/sdt 0 /dev/標準エラー 0 /dev/標準入力 0 /dev/標準出力 0 /dev/システム追跡 0/開発者/tty 0 /dev/tty.Bluetooth 受信ポート 0 /dev/tty.Bluetoothモデム 0 /dev/ttyp0 0 /dev/ttyp1
誰かがこのディレクトリが何であるかを詳しく説明できますか?なぜすべて0バイトですか?
答え1
彼らデバイスノード:
Unixファミリーオペレーティングシステムでは、デバイスファイルまたは特殊ファイルはデバイスドライバへのインタフェースであり、通常のファイルのようにファイルシステムに表示されます。 [...]これにより、ソフトウェアは標準の入出力システムコールを使用してデバイスドライバと対話することができ、これは多くのタスクを簡素化し、ユーザースペースI / Oメカニズムを統合します。
つまり、通常のディレクトリで構成できますが、通常のファイルではありません。歴史的に、これはいくつかのカーネル情報を使用してディスクに作成された実際のノードでした。最新のLinuxシステムでは、特別なメモリ内ファイルシステムに置き換えられました。開発者ファイルシステム/proc
、インメモリprocf、インメモリ/sys
sysfによく似ています。そのため、ゼロバイトとしてリストされます。これはカーネルへの直接のインターフェースです。
それが何であるかについては、Wikipediaの記事に「命名規則」のセクションがありますが、これは拘束力があるか普遍的ではありません(ユーザー空間で名前を変更することができます。たとえば、RedHat / Fedoraから派生したudevインストールはこれを行います)。日付の左側の2つの列ls -l
(「サイズ」)に示されている州/マイナー番号から別の手がかりを取得できます。この数字は/sys/dev/block
またはの項目に対応します/sys/dev/char
。
これらのデバイスのほとんどは次のとおりです。仮想ハードウェアの特定の部分とほとんどまたはまったく関係がない可能性があります。たとえば、tty
デバイスはctrl-alt-F [N]を使用してナビゲートする仮想端末です。pt
デバイス(ディレクトリ付き)は、GUIエミュレータで使用される擬似端末です。共有メモリセグメント(shm
実際のサイズを持つ)など、より難解なものがたくさんあります。繰り返しますが、目的は単に標準化されたカーネルインタフェースを提供することです。 「デバイス」という概念は非常に緩いです。