開いたファイルハンドルが死んだ後、どこに行きますか?

開いたファイルハンドルが死んだ後、どこに行きますか?

ファイルハンドルが開いている間に削除されたファイルはどうなりますか?

動画ファイルの再生中に削除できることがわかったので、これについて疑問に思いました。プレイヤーそして最後まで再生されます。どこからデータをインポートしますか?まだハードドライブから出ていますか?ファイルを削除するとRAMにコピーされますか?

まだハードドライブにある場合、プログラムの実行中にデフォルトで割り当てられていない領域からデータを読み取ってファイルシステムを埋めるとどうなりますか? RAMにバッファリングされている場合、バッファをフラッシュするとどうなりますか?

ファイルがNFS共有にある場合はどうなりますか?サーバーに保存されますか? (これはセキュリティリスクではありませんか?開いているリモートファイルハンドルが多すぎるとDoSが発生する可能性がありますか?)

何かをすると、lsof -n |grep '(deleted)'時には興味深い結果が出ることがあります。共有ライブラリファイルを交換するパッケージをアップグレードすると、そのライブラリを使用するプログラムを実行すると、何も変更されていないかのように使用できます。

ボーナス質問:この状況でデータを再度有効にする方法はありますか?

ベストアンサー1

もはやinodeへのハードリンクはありませんが、inodeはディスクに残ります。ファイル記述子が閉じると削除されます。それまでは、ファイル名/ハードリンク操作が必要ない限り、ファイルを正常に変更できます。

debugfs同様のツールを使用してinodeの内容を復元できます。

おすすめ記事