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

时间:2015-07-20 11:01:50

标签: linux file file-io archlinux

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

Plz让我知道,有什么方法可以恢复该文件。

你的积极回应真的会有所帮助。

1 个答案:

答案 0 :(得分:4)

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

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

lsof -p X

这将显示X当前打开的文件列表。第4列显示文件描述符,最后一列显示文件所在的安装点和文件系统的名称(忽略文件描述符号后面的ur和其他标志,它们只是指示文件是否打开以供阅读,写作等。)

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

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