当前,我正在编写python脚本,以在Linux上使用pyinotify来实现文件监视。与其他工具的不同之处在于,使用审计日志来丰富输出。
在一些系统上,我的脚本像一个超级按钮一样工作,但是一个系统在使用vim编辑文件时显示了另一种行为:在某些系统上,文件是使用
编写的/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE
/etc/login.defs MODIFY
/etc/login.defs OPEN
/etc/login.defs MODIFY
/etc/login.defs MODIFY
/etc/login.defs CLOSE_WRITE,CLOSE
/etc/login.defs ATTRIB
/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE
/etc/login.defs OPEN
/etc/login.defs ACCESS
/etc/login.defs CLOSE_NOWRITE,CLOSE
那很好,因为差异化文件会导致干净的结果。在其他系统上,vim在写入文件时的行为如下:
/etc/login.defs MOVE_SELF
/etc/login.defs ATTRIB
/etc/login.defs DELETE_SELF
...
creating a new file
有人可以解释为什么vim会显示这种行为,以及我如何能够迫使我的测试系统上的vim行为相同,以便我能够处理它?</ p>
环境: 德班9.7 vim版本:2:8.0.0197-4 + deb9u1
答案 0 :(得分:0)
由于Vim的备份选项,我认为您会看到不同的结果。默认情况下,Vim会移走原始文件,将更新的文件内容写入另一个(临时)文件名,然后将其重命名为原始文件,最后删除移走的原始文件。这样可以确保即使在两次故障之间都不会发生任何数据丢失。
该行为由'backup'
和'writebackup'
Vim选项控制。有关详细说明,请参见:help backup-table
。
对于 intify 观察,默认行为是有问题的。您可以尝试:set nowritebackup
,但这会增加数据丢失的风险,除非您也:set backup
。