Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 链接到特定inode_Linux_Inode_Ln_Lsof - Fatal编程技术网

Linux 链接到特定inode

Linux 链接到特定inode,linux,inode,ln,lsof,Linux,Inode,Ln,Lsof,我有一个文件已被删除,但仍保持打开状态。我使用lsof找到了inode编号。如何创建指向该inode的硬链接 任何代码都有帮助,但Perl会很方便。从/proc/pid复制文件描述符 使用lsof查找pid和文件描述符。在EXT文件系统上,可以使用debugfs命令重新创建链接,如: debugfs -w /dev/mapper/vg0-root -R 'link <16> myfile' debugfs-w/dev/mapper/vg0 root-R'link myfile'

我有一个文件已被删除,但仍保持打开状态。我使用lsof找到了inode编号。如何创建指向该inode的硬链接

任何代码都有帮助,但Perl会很方便。

从/proc/pid复制文件描述符


使用lsof查找pid和文件描述符。

在EXT文件系统上,可以使用debugfs命令重新创建链接,如:

debugfs -w /dev/mapper/vg0-root -R 'link <16> myfile'
debugfs-w/dev/mapper/vg0 root-R'link myfile'

这将创建一个名为myfile的“文件”,指向inode 16。

我刚刚运行了自己的小测试,这确实有效,但我不明白为什么!这些是指向实际文件的符号链接,符号链接通过文件名访问文件,不是吗?您不能硬链接到/proc中的条目,因为硬链接必须位于同一文件系统上(即,您的链接必须位于/proc中)。抄写应该可以。马克:注意了,谢谢。托马斯:它们不是真正的符号链接,只是看起来像而已。Google for proc_register_dynamic获取更多信息。这是恢复当前数据的非常有用的过程(upvoting:),但它并没有真正回答这个问题
cp
将已删除文件的内容复制到新文件中。它没有链接到原始inode。@pabouk那么,你认为它是否真的对asker有效?它被错误地接受了吗?也许提问者误解了他们在做什么。这回答了问题。非常感谢。只有一个问题。
link
命令不会增加inode的引用计数。因此,实际上,在程序关闭文件描述符并且inode的引用计数减少到零之后,文件可能会立即丢失。不幸的是,我不知道一种简单可靠的方法如何更改inode的引用计数此外,完整的答案还应显示如何获取inode编号:
stat-L/proc/PID/fd/FILE\u DESCRIPTOR
(或
ls-Li
)。