1. ホーム
  2. linux

[解決済み] Linuxの「stale file handle」とはどういう意味ですか?

2022-03-03 23:02:54

質問

あるターミナルを開いていて、そのターミナルから cd をあるディレクトリに作成しました。別の端末でそのディレクトリを削除し、同一のバックアップから復元しました。このとき vim というエラーが表示されるのはなぜですか?これはどういう意味でしょうか?(余談ですが、この問題を回避するために cd $(pwd) .)

解決方法は?

ディレクトリを削除すると イノード はリサイクルされます。 シェルが持っているそのディレクトリのinode(とそのコンテンツのinode)へのポインタは、もはや有効ではありません。 ディレクトリがバックアップからリストアされるとき、古い inode は ない (ディレクトリとそのコンテンツはランダムなinodeに保存されます。 唯一、同じままなのは ディレクトリは、リストアされたディレクトリと同じ名前を再利用します (あなたがそうするように指示したからです)。

ここで、元のシェルが指しているディレクトリの内容にアクセスしようとすると、その要求を元のinodeの要求としてファイルシステムに伝えますが、そのinodeはその後リサイクルされ、今は全く別のことに使われているかもしれません。 そのため stale file handle メッセージは、存在しないデータを要求したためです。

を実行すると cd オペレーションを実行すると、シェルはあなたが指定した宛先の inode ロケーションを再評価します。 シェルはディレクトリの新しい inode (およびそのコンテンツの新しい inode) を知っているので、そのコンテンツに対する将来のリクエストは有効です。