恢复卡在 Linux shell 进程中的已删除文件

Recover Deleted File Stuck In Linux shell process

我有一个长期处于 运行 的后台进程,并使用一个文件在其中写入日志。它的大小增加得太大了。我刚刚删除了文件并创建了一个具有相同名称、相同权限和所有权的新文件,但新文件没有任何条目。 旧文件被标记为已删除并且仍在被进程使用,这可以通过 lsof 命令清楚地看到。

请告诉我,有什么办法可以恢复那个文件和。

你的积极回应真的很有帮助。

如果文件仍然被某些进程打开,您可以使用 /proc 文件系统恢复它。

首先,检查在该进程中打开该文件的文件描述符编号。如果文件是在PID为X的进程中打开的,使用lsof命令如下:

lsof -p X

这将显示 X 当前打开的文件列表。第 4 列显示文件描述符,最后一列显示文件所在的挂载点和文件系统的名称(忽略文件描述符编号后的 ur 和其他标志,它们只是指示文件是否打开以进行读取、写入等)

如果文件描述符编号为Y,您可以在/proc/X/fd/Y中访问其内容。所以,像这样的东西可以恢复它:

cp /proc/X/fd/Y /tmp/recovered_file