• 締切済み

CentOSで、消したはずのファイルが閲覧できる

状況を再現する環境が無いので、こちらで質問させてください。 CentOSの6.2か6.3で発生しました。Teratermでアクセスしています。 1.Teratermでログインして、ディレクトリを作ります。 /home/username/work/20131217 ↑こんなディレクトリをつくり、移動します。 2.ファイルを保存して、lessで開きます。 テキストファイル(ここではsample.txtとします)を作り、less コマンドで参照します。 > less sample.txt ↑こんな感じです。 3.もう一つTeratermを開いて、/home/usernameディレクトリに移動します。 4.3で開いたTeraterm上で、/home/username/work/20131217 を削除します。 > rm -rf /home/username/work/20131217 5.最初に開いていたTeratermで、lessを閉じます。 6.最初に開いていたTeratermで、もう一度sample.txtをlessで開きます。 なぜか閲覧できるのです…。 ディレクトリごと削除しているはずなのに・・・。 再現環境を用意できなかったのですが、今までに2回発生しています。 めったにアクセス出来ない環境なので、詳しく調べる事もままならないのです。 やはり私のミスなのでしょうか…。

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

ちゃんと確認はしていませんが……。 オープンしているファイルを削除した場合、そのファイルを開いているプロセスが無くなるまで実際に削除されない。 かと。 今回の場合だと最初に接続している端末が/home/username/work/20131217のディレクトリを(カレントディレクトリとして)使用中です。 後から開いた端末では使用していませんので、そちらでディレクトリを確認すると削除されているように見えるでしょう。 # OSがそう処理しています。 その上で、後から開いた端末で/home/username/work/20131217ディレクトリを作成すると、先に開いた端末が使用しているのとは別の/home/username/work/20131217ディレクトリが作成されるハズです。 名前は同じですがiノード番号が異なるハズです。 # 先に開いた端末でls -iaをした場合の./ディレクトリのiノード番号と、 # 後に開いた端末でls -ia /home/username/work/20131217で表示される./ディレクトリのiノード番号が異なる。という状況になるハズ。 先に開いた端末でカレントディレクトリを移動して/home/username/work/20131217が参照から外れた時点でファイルシステムから実際に削除されると思われます。 野良rpmビルドしている時にエラーがあってBUILD/~ディレクトリに潜っている端末とrpmbuildコマンドを実行した端末が別…ってのを時々やりますねぇ……。