linux使用lsof恢复误删的nginx日志文件——筑梦之路
前提条件
确保当前nginx进程运行中
处理流程
处理过程
1. 确保nginx进程在运行
systemctl status nginx ps -ef | grep nginx
2. 删除nginx日志文件
rm -f /var/log/nginx/access.log
3. lsof恢复删除的日志文件
# 查看进程lsof | grep /var/log/nginx/access.log可以看到,nginx主进程号,因为nginx进程没有退出,该文件描述符还未被释放,所以还是可以恢复的,仔细看行末文件名多了一个deleted被删除的标记进入linux中一个管理所有进程的目录,/proc,找到对应的进程id目录(父亲进程id),进入其管理文件描述符的地方。比如nginx主进程号1439cd /proc/1439/fd && ls -lh看到的软连接文件5,就是对应的刚刚误删掉的access.log文件,使用cat命令恢复日志文件# 恢复此文件描述符的数据,到日志文件即可完成文件恢复cat 5 > /var/log/nginx/access.log
这里以nginx为例,仅供参考。