デバイスファイルを削除するとどうなりますか?


21

/ devの下にあるファイルについては大体知っています。

2つのタイプ(文字/ブロック)があることを知っています。これらのファイルにアクセスすると、カーネル内のドライバーと通信します。

特に両方のタイプのファイルについて、1つを削除するとどうなるかを知りたいです。ブロックデバイスファイルを削除した場合、たとえば/dev/sda、もしあれば、どのような効果がありますか?ディスクをアンマウントしましたか?

同様に、削除すると/dev/mouse/mouse0どうなりますか?マウスが機能しなくなりましたか?自動的に置き換えられますか?

これらのファイルを削除することもできますか?VMがセットアップされている場合は、試してみます。


1
SVR4システムで/ dev / zeroを1回削除しました。悪いアイデア。システムを再び起動可能にするために少し手間がかかりました。
ブラッドラナム

回答:


30

それらは単なる(特別な)ファイルです。それらは実際のデバイスへの「ポインタ」としてのみ機能します。(つまり、カーネル内のドライバーモジュール。)

一部のコマンド/サービスがそのファイルを既に開いている場合、デバイスへのハンドルが既にあり、動作し続けます。

一部のコマンド/サービスが新しい接続を開こうとすると、そのファイルにアクセスしようとし、「ファイルが見つかりません」が原因で失敗します。

通常、これらのファイルはudev、システムの起動時やUSBデバイスの接続などの特別なイベントで自動的に作成されますが、を使用して手動で作成することもできますmknod


3
これは本当に質問に答えません
...-Gogeta70

「通常、これらのファイルはudevによって生成されます」通常、ただしLinuxで。makedev通常は仕事をするコマンドがあり 、それとは異なりudev、ほとんどのUNIX系OSには存在するようです。
セルギーKolodyazhnyy

1
@ Gogeta70この投稿は、質問のどの部分が未回答のままになりますか?
ルスラン

@RonJohn質問にタグが付けられlinuxudev
マイケルMrozek

1
@RonJohnはい、しかし「しかし」で。Ubuntuのハックの があり'06ショーなどからである本/etc/init.d/makedevFreeBSDのマニュアルでは、(1983年から)MAKEDEVは4.2BSDで登場しました言及しています。1983年にはMAKEDEV、06
Sergiy Kolodyazhnyy

8

デバイスファイルは、実際にはカーネルのデバイステーブルのエントリのファイルシステムエイリアスです。「ls -l」で/ devファイルを見ると、メジャーデバイス番号とマイナーデバイス番号があることがわかります。ファイルシステムからファイルを削除した場合、適切なツールを使用していつでもファイルを再作成して、特殊ファイルをカーネルデバイステーブルのエントリに再リンクできます-mknod(1)を参照してください。


3

その瞬間から、それらのデバイスに既に開いているプログラムからのみアクセスできます。したがって、ファイルシステムをアンマウントする方法はありません。また、udevを使用すると、リブートするとそれらのデバイスが復元される場合があります。UNIXを学ぶ奇妙な方法。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.