恢复卡在 Linux shell 进程中的已删除文件
Recover Deleted File Stuck In Linux shell process
我有一个长期处于 运行 的后台进程,并使用一个文件在其中写入日志。它的大小增加得太大了。我刚刚删除了文件并创建了一个具有相同名称、相同权限和所有权的新文件,但新文件没有任何条目。
旧文件被标记为已删除并且仍在被进程使用,这可以通过 lsof 命令清楚地看到。
请告诉我,有什么办法可以恢复那个文件和。
你的积极回应真的很有帮助。
如果文件仍然被某些进程打开,您可以使用 /proc
文件系统恢复它。
首先,检查在该进程中打开该文件的文件描述符编号。如果文件是在PID为X
的进程中打开的,使用lsof
命令如下:
lsof -p X
这将显示 X
当前打开的文件列表。第 4 列显示文件描述符,最后一列显示文件所在的挂载点和文件系统的名称(忽略文件描述符编号后的 u
、r
和其他标志,它们只是指示文件是否打开以进行读取、写入等)
如果文件描述符编号为Y
,您可以在/proc/X/fd/Y
中访问其内容。所以,像这样的东西可以恢复它:
cp /proc/X/fd/Y /tmp/recovered_file
我有一个长期处于 运行 的后台进程,并使用一个文件在其中写入日志。它的大小增加得太大了。我刚刚删除了文件并创建了一个具有相同名称、相同权限和所有权的新文件,但新文件没有任何条目。 旧文件被标记为已删除并且仍在被进程使用,这可以通过 lsof 命令清楚地看到。
请告诉我,有什么办法可以恢复那个文件和。
你的积极回应真的很有帮助。
如果文件仍然被某些进程打开,您可以使用 /proc
文件系统恢复它。
首先,检查在该进程中打开该文件的文件描述符编号。如果文件是在PID为X
的进程中打开的,使用lsof
命令如下:
lsof -p X
这将显示 X
当前打开的文件列表。第 4 列显示文件描述符,最后一列显示文件所在的挂载点和文件系统的名称(忽略文件描述符编号后的 u
、r
和其他标志,它们只是指示文件是否打开以进行读取、写入等)
如果文件描述符编号为Y
,您可以在/proc/X/fd/Y
中访问其内容。所以,像这样的东西可以恢复它:
cp /proc/X/fd/Y /tmp/recovered_file