gpt4 book ai didi

linux - Linux 中的 'stale file handle' 是什么意思?

转载 作者:IT老高 更新时间:2023-10-28 12:25:27 27 4
gpt4 key购买 nike

假设我打开了一个终端,并通过该终端cd'ed 到某个目录。通过另一个终端,我删除了该目录并从相同的备份中恢复它。当我尝试从第一个终端在同一目录中 vim 一个文件时,为什么会收到有关过时文件句柄的错误消息?这是什么意思? (顺便说一句,我发现可以通过 cd $(pwd) 绕过这个问题。)

最佳答案

当目录被删除时,inode因为该目录(及其内容的 inode)被回收。您的 shell 指向该目录的 inode(及其内容的 inode)的指针现在不再有效。当目录从备份中恢复时,旧的 inode 不会(必然)被重用;目录及其内容存储在随机 inode 上。唯一保持不变的是 parent 目录为恢复的目录重用了相同的名称(因为您告诉过它)。

现在,如果您尝试访问原始 shell 仍指向的目录的内容,它将将该请求作为对原始 inode 的请求传递给文件系统,该请求已被回收(甚至可能在现在用于完全不同的东西)。因此,您会收到 stale file handle 消息,因为您要求提供一些不存在的数据。

当您执行 cd 操作时,shell 会重新评估您给它的任何目的地的 inode 位置。既然您的 shell 知道目录的新 inode(及其内容的新 inode),以后对其内容的请求将是有效的。

关于linux - Linux 中的 'stale file handle' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105260/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com