Jeff Ferland Asked: 2009-07-25 07:51:20 +0800 CST2009-07-25 07:51:20 +0800 CST 2009-07-25 07:51:20 +0800 CST 链接到特定的 inode 772 我有一个文件已被删除,但仍被程序保持打开状态。我使用 lsof 找到了 inode 号。如何创建指向该 inode 的硬链接? linux inode lsof 3 个回答 Voted Best Answer sunny256 2009-07-25T08:13:07+08:002009-07-25T08:13:07+08:00 您无法创建指向它的链接,但可以将其取回。让我们做一个实验: $ echo blurfl >myfile.txt $ tail -f myfile.txt & $ rm myfile.txt myfile.txt 现在已经消失了,但是通过 tail 命令使 inode 保持活动状态。要取回您的文件,首先找到保留 inode 的进程的 PID: $ ps auxw | grep tail sunny 409 0.0 0.0 8532 824 pts/5 S 18:07 0:00 tail -f myfile.txt PID 是 409。chdir 到 /proc/409/fd/ 并列出内容: dr-x------ 2 sunny sunny 0 2009-07-24 18:07:18 . dr-xr-xr-x 7 sunny sunny 0 2009-07-24 18:07:17 .. lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 0 -> /dev/pts/5 lrwx------ 1 sunny sunny 64 2009-07-24 18:07:33 1 -> /dev/pts/5 lrwx------ 1 sunny sunny 64 2009-07-24 18:07:18 2 -> /dev/pts/5 lr-x------ 1 sunny sunny 64 2009-07-24 18:07:33 3 -> /home/sunny/tmp/myfile.txt (deleted) /proc/[PID]/fd/ 目录包含指向进程使用的所有文件的文件描述符的符号链接。在这种情况下,符号链接“3”指向已删除的文件。因此,要恢复文件,请将内容复制到新文件: $ cat 3 >/home/mydir/saved_file.txt eMBee 2013-10-28T20:28:12+08:002013-10-28T20:28:12+08:00 获取整个文件,如果它仍然被写入尝试tail -c +1 -f 来自: https ://unix.stackexchange.com/questions/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning (顺便说一句:/proc 上的 fd 中的 ln 不起作用,只是尝试过) Vatine 2009-07-25T07:56:35+08:002009-07-25T07:56:35+08:00 在 Linux 下没有可移植的方法来执行此操作。最好的方法可能是停止文件系统上的所有活动,终止保持文件打开的程序,卸载文件系统并使用文件系统调试器将其重新附加到目录。如果您有通过 NFS 导出的文件系统,则至少某些 NFS 版本可能允许您跨 NFS 读取文件数据。
您无法创建指向它的链接,但可以将其取回。让我们做一个实验:
myfile.txt 现在已经消失了,但是通过 tail 命令使 inode 保持活动状态。要取回您的文件,首先找到保留 inode 的进程的 PID:
PID 是 409。chdir 到 /proc/409/fd/ 并列出内容:
/proc/[PID]/fd/ 目录包含指向进程使用的所有文件的文件描述符的符号链接。在这种情况下,符号链接“3”指向已删除的文件。因此,要恢复文件,请将内容复制到新文件:
获取整个文件,如果它仍然被写入尝试
tail -c +1 -f
来自: https ://unix.stackexchange.com/questions/25527/how-to-follow-a-la-tail-fa-binary-file-from-the-beginning
(顺便说一句:/proc 上的 fd 中的 ln 不起作用,只是尝试过)
在 Linux 下没有可移植的方法来执行此操作。最好的方法可能是停止文件系统上的所有活动,终止保持文件打开的程序,卸载文件系统并使用文件系统调试器将其重新附加到目录。如果您有通过 NFS 导出的文件系统,则至少某些 NFS 版本可能允许您跨 NFS 读取文件数据。