sshdが私の/dev/zeroを削除したのはなぜですか?

sshdが私の/dev/zeroを削除したのはなぜですか?

これにより、lsof +c 0 | grep /dev/zero次の2行が表示されます。

sshd    19064    root  DEL    REG    0,4    497862    /dev/zero
sshd    19064    root  DEL    REG    0,4    498725    /dev/zero

これデルキーワードは私が興味を持っているものです。マニュアルページで意味するものは次のとおりです。

デル削除されたLinuxマッピングファイルの場合

しかし、最後に確認したときに再起動しても、/dev/zeroまだそのまま残っていました。なぜですか?SSHDこのキャラクターデバイスを削除しようとしていますが、次の理由で成功するのはなぜですか?

  • ファイルではなくキャラクターデバイスです。
  • ルートが所有しています。

オペレーティングシステム情報: Linux localhost 3.4.103 #1 SMP PREEMPT Thu Dec 18 13:07:12 CST 2014 armv7l GNU/Linux (アーキテクチャLinux)

答え1

DEL示さないそのプロセス削除されたが/dev/zeroプロセスが使用中で、/dev/zero使用中のインスタンスが/dev/zero削除されました。たとえば、andをsome-command使用するコマンドがあるとします/some/file

$ some-command &
$ rm /some/file
$ touch /some/file

それでは、lsof次のよう/some/fileになります。

some-command    ...    ...  DEL    ...    ...    ...    /some/file

削除されたファイルの内容は、プロセスが解放または終了するまでディスクに残りますが、直接アクセスすることはできません。

/some/file私が作成したバージョンが使用しているバージョンtouchではありません。some-command

関連情報