lsof恢复进程打开的文件
Posted 你很棒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lsof恢复进程打开的文件相关的知识,希望对你有一定的参考价值。
工作原理:进程每打开文件都会生成一个文件句柄FD来标识一个文件,进程打开的文件如果没有被释放,可以通过文件句柄FD来恢复删除的文件
注意:适合恢复进程一直在打开一个文件,例如日志文件,如果配置文件进程启动的时候读取马上释放掉该文件的句柄通过这种方式是恢复不了的;同时如果打开的文件被删除掉,同时把服务重启了,服务被重启这个文件句柄也会被释放掉,通过lsof方式也是无法恢复的;
安装:yum install lsof -y
查看打开/var/log/messages文件的进程
这里打开/var/log/messages文件的进程是rsyslog,进程pid是925,属主root,4表示文件FD,w是写状态[[email protected] ~]# lsof | grep messages rsyslogd 925 root 4w REG 253,0 194666 35851428 /var/log/messages in:imjour 925 963 root 4w REG 253,0 194666 35851428 /var/log/messages rs:main 925 964 root 4w REG 253,0 194666 35851428 /var/log/messages
删除该文件
rm -rf /var/log/messages
再次查看打开/var/log/messages文件的进程(deleted)
[[email protected] ~]# lsof | grep messages rsyslogd 925 root 4w REG 253,0 195350 35851428 /var/log/messages (deleted) in:imjour 925 963 root 4w REG 253,0 195350 35851428 /var/log/messages (deleted) rs:main 925 964 root 4w REG 253,0 195350 35851428 /var/log/messages (deleted)
查看进程的、文件句柄
[[email protected] ~]# ll /proc/925/fd/4 l-wx------ 1 root root 64 May 11 00:37 /proc/925/fd/4 -> /var/log/messages (deleted)
根据文件句柄恢复
cp /proc/925/fd/4 /var/log/messages
以上是关于lsof恢复进程打开的文件的主要内容,如果未能解决你的问题,请参考以下文章