Skip to content

Latest commit

 

History

History
143 lines (124 loc) · 4.33 KB

vim_inotifywait.md

File metadata and controls

143 lines (124 loc) · 4.33 KB

inotifywait 监控 Vim 编辑新文件时产生的临时文件 swp、swpx 等以及相关操作

结论:从文件的增删改(create,delete,modify)监控监督可见:Vim 编辑新文件并并保存这样的简单操作的背后,内部发生了不少操作:自动创建了 .b.swp.b.swpx,之后又删除了,又重新创建 .b.swp 等。

本文起因:

  • 尝试用 inotifywait 监控 nginx 容器中的配置目录变化后自动 reload nginx
  • 并允许临时用 Vim 编辑配置文件,但发现 Vim 并未开始保存,inotifywait 已开始出发 nginx reload
  • 但即使 exclude 了 swp,inotifywait 也依然会在 Vim 保存文件前触发 reload
  • 曾一度怀疑 inotifywait 的 exclude 参数不生效
  • 最后发现,原来 Vim 还另外产生了 .swpx 文件,并且 .swpx 只存在了一小段时间(保存 Vim 的编辑文件前)就被自动删了

使用

  • 前提:
    • /data/ 目录存在,且目录为空
    • /data/b 文件不存在
  • /data 目录开始 inotifywait 监控:
#!/bin/bash
inotifywait -mrq -e modify,delete,create /data/ | 
while read event; do
    echo $event
done
  • vim /data/b 开始编辑
  • 输入 i 进入编辑模式,填入内容 1
  • :wq 退出

只监控 modify,delete,create 操作

下面是 inotifywait 监控得到的内部操作过程(事件:-e modify,delete,create):

/data/ CREATE .b.swp
/data/ CREATE .b.swpx
/data/ DELETE .b.swpx
/data/ DELETE .b.swp
/data/ CREATE .b.swp
/data/ MODIFY .b.swp
/data/ MODIFY .b.swp
/data/ CREATE b
/data/ MODIFY b
/data/ MODIFY .b.swp
/data/ DELETE .b.swp

监全部操作

下面是 inotifywait 监控得到的内部操作过程(所有事件,即不带 -e 参数):

/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ CREATE .b.swp
/data/ OPEN .b.swp
/data/ CREATE .b.swpx
/data/ OPEN .b.swpx
/data/ CLOSE_WRITE,CLOSE .b.swpx
/data/ DELETE .b.swpx
/data/ CLOSE_WRITE,CLOSE .b.swp
/data/ DELETE .b.swp
/data/ CREATE .b.swp
/data/ OPEN .b.swp
/data/ MODIFY .b.swp
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ OPEN,ISDIR
/data/ CLOSE_NOWRITE,CLOSE,ISDIR
/data/ MODIFY .b.swp
/data/ MODIFY .b.swp
/data/ CREATE b
/data/ OPEN b
/data/ MODIFY b
/data/ CLOSE_WRITE,CLOSE b
/data/ MODIFY .b.swp
/data/ CLOSE_WRITE,CLOSE .b.swp
/data/ DELETE .b.swp

参考