
nautilus
実際に、再生中のビデオを Shift キーを押しながら削除 (つまり、ゴミ箱に移動しない) すると、またはls
(ターミナル) に名前付き参照がなくても、ビデオが再生され続けることに気付きました。
プレーヤーがビデオの再生を終了すると、ディスク領域は正常に解放されますか?
これは通常の動作だとは思いますが、私にとっては確かに新しい経験です (これは Windows では不可能だったため)。
答え1
削除したにもかかわらず、ファイルはプレーヤーで開いているため、まだ使用されています。メディア プレーヤーを閉じると、ファイル データのハンドルが解放され、削除されます。
これは、開いているファイルを一覧表示する コマンドで確認できますlsof
。lsof を実行すると、ムービー ファイルはプレーヤーによって開かれていると一覧表示されますが、その横に「DEL」が表示されます。これは、まだ開いているにもかかわらず削除されたことを意味します。
これは実際にすべて便利なもので、削除した開いているファイルを実際に回復できることを意味しますが、それはおそらく別の質問に残しておくのが最善でしょう :)
これは、(私が理解している限りでは)ファイルがデータ自体とファイルへのハンドル(ファイルシステム内の場所)から構成されているために発生します。通常、ファイルには 1 つのハンドルしかありませんが、ln
ハード リンクを作成するコマンドを使用して他のハンドルを作成できます。これにより、ファイルの同一のコピーのように見えますが、実際には別のハンドルが追加されるだけなので、ディスク領域が 2 倍使用されることはありません。2 つのファイルの inode を調べることでこれを確認できます。これにより、データが実際にどこにあるかがわかります。
たとえば、ターミナルウィンドウでは次のようにします。
ln existing_movie.avi movie_hardlink.avi
ls -i
ls の -i 引数はファイルの inode 情報を表示します。それらは同一である必要があります。
これらのファイルの 1 つを削除しても、もう 1 つのファイルには inode へのハンドルが残っているため、データは残ります。2 番目のファイルを削除すると、inode にはハンドル/参照が残っていないため、未使用領域として削除/マークされます。これは、プレーヤーでムービーを開いている場合とまったく同じですが、2 番目のハンドルは、ファイルシステム内の 2 番目のファイルではなく、実行中のプログラム内にある点が異なります。
答え2
読むhttp://linuxgazette.net/105/pitcher.html、その理由を理解します(そしてハードリンクとソフトリンクの違いを学びます)