加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

进程打开文件进行写入时,使用vim打开文件进行写入导致fd文件描述

发布时间:2020-12-15 09:08:04 所属栏目:安全 来源:网络整理
导读:今天解决了一个困扰一上午的问题,进程打开文件进行写入时,使用vim打开文件进行写入导致fd文件描述符失效 https://www.douban.com/note/592324007/ 一、bug描述 dpi v5程序在运行一段时间过后,程序的server日志不生成了. 使用sed -i 修改了一个日志文件后,ta

今天解决了一个困扰一上午的问题,进程打开文件进行写入时,使用vim打开文件进行写入导致fd文件描述符失效

https://www.douban.com/note/592324007/

一、bug描述

dpi v5程序在运行一段时间过后,程序的server日志不生成了.

使用sed -i 修改了一个日志文件后,tail -f 发现该文件不再有输出了,最后,无奈,reload了下进程才能重写。

二、做实验复现

下面来复现下现象:
1.进程打开日志文件,使用lsof -p pid

2.vim没打开文件前(或者打开vim没进行wq保存),进程打开的文件描述符的状态是
上图

3.当vim 修改文件后wq时,会提示

有个警告,提示文件在读期间被修改了,我们选择yes,

4.此时再使用lsof -p pid命令来查看打开的文件描述符

进程打开的文件描述符的状态变为了deleted状态.

三、总结和复盘

原因可能是 sed -i 或者vim会新建一个文件,然后替换掉旧文件。进程里的打开的文件描述符还是老的文件描述符,但是已经没关联该新建立的文件,所以进程就不会往该文件里写内容。

vim打开一个文件背后发生了什么?swp交换文件是干什么用的? 在q时,会对swp文件做什么处理? 在wq时,会对swp文件做什么处理?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读