ウィキペディアの記事/dev/null
を読んで、ファイルをに移動して遊んでいました/dev/null
。
このために、私はを作成し、test_file
それにいくつかのコンテンツを入れました:
$ touch test_file
$ echo "This is written by Aditya" > test_file
$ cat test_file
This is written by Aditya
その後、ファイルを/dev/null
次の場所に移動しようとしました。
$ mv test_file /dev/null
mv: inter-device move failed: ‘test_file’ to ‘/dev/null’; unable to remove target: Permission denied
以来、これは私にPermission denied
エラーを与えました。私は先に進みsudo
、Permission denied
エラーが発生するたびに通常どおりに使用しました。
$ sudo mv test_file /dev/null
コマンドは成功test_file
し、ディレクトリに存在しなくなりました。
ただし、ウィキペディアの記事には、移動先のものを復元することは不可能で/dev/null
あり、そこEOF
から読み取ろうとするプロセスにが与えられると書かれています。しかし、私はから読むことができます/dev/null
:
$ cat /dev/null
This is written by Aditya
何を間違えたの/dev/null
ですか?また、通常の状態に戻すにはどうすればよいですか?そして、なぜ私はPermission denied
そもそもエラーに遭遇したのですか?
/dev/null
ファイルです。特別なファイル。システム上のハードウェアと通信する/ dev / sdaや/ dev / ttyなどのデバイスファイル。
との唯一の違い/dev/null
は、ハードウェアがリンクされていないことです。送信したデータはすべてサイレントに破棄されます。次のコマンドのように:
echo "Hello World" > /dev/null
の出力echo
をnull、void、ブラックホールに送信するため、端末には何も出力されません。
しかし、あなたがそうしたとき、あなたはmv test_file /dev/null
あなた/dev/null
のコンテンツのコピーを保持している通常のテキストファイルに特別なファイルを置き換えましたtest_file
。言い換えれば、あなたはあなたのを失いました/dev/null
。
今、あなたがしなければならないことは(それを再構築するために)です:
sudo rm /dev/null
sudo mknod -m 0666 /dev/null c 1 3
多くのスクリプトはデフォルトでに出力を送信するため、再構築する必要があります/dev/null
。場合は/dev/null
これ以上のブラックホールが、通常のテキストファイルであり、それは、成長しない成長し、あなたのファイルシステムを埋めることがあります。そして、私はあなたがこれを避けたいと確信しています。
さらに危険なことに、多くのスクリプトは、からの/dev/null
読み取りでは何も読み取られないと想定しています。この仮定を破ると、システム全体のファイルにランダムなゴミが書き込まれる可能性があります...修正することは事実上不可能です。
また、Linuxはマルチタスクであることを忘れないでください。遊んでいる/dev/null
間、多くのプロセスが実行されており、数秒の「機会の窓」の間でも大混乱を引き起こす可能性があります。
遊んでみたい場合は/dev/null
、コピーを作成して試してみることができます。
sudo mknod -m 0666 /tmp/null c 1 3
/tmp/null
まったく同じように機能する/dev/null
が、システムにリスクを与えることなく操作およびテストできるファイルを作成します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加