zoukankan      html  css  js  c++  java
  • tail -f 在对文件进行动态追踪时失效的问题

    1. 在我是用 tail -f file.txt 对这个文件进行动态追踪时:

    1. 我重新打开一个新的终端进行vim编辑这个文件并且保存

    1. 这是我们发现,tail -f file.txt'动态追踪的这个文件没有任何的变化,失去了效果

    2. 发生上述情况的原因是:vim是将原来的文件删除后,然后再生成一个新的文件,而tail -f命令是根据文件的inode来追踪文件的,vim把原来的文件删除,新生成的同名文件的inode已经发生了变化,所以导致tail -f命令失效。

    我们来验证一下:

    1. 首先查看file.txt的文件的inode

      ls -i file.txt
      

    1. 当我们使用vim进行编辑保存后:

      vim file.txt 
      
    2. 再查看file.txt文件的inode

      ls -i file.txt
      

    1. 可以看到vim命令在将这个文档编辑之后删除重新生成一个同名文件

    结论:tail -f通过inode追踪文件,如果文件的inode发生了变化,将会使tail -f失效。

    解决方案

    使用tail -F替代tail -f,根据man tail的说明,tail -F在文件不可以打开的时候,会重试打开该文件,也就是在vim删除旧文件,创建新文件的过程中,tail短暂性失去了对tmp.test文件的访问权限,加上-F选项后,tail在文件恢复访问后可以重新对文件实施跟踪。

  • 相关阅读:
    【python系统学习04】条件判断语句
    【Python系统学习03】错误类型整理(一)
    【Python系统学习02】数据类型与类型转换
    【Python系统学习01】print函数的用法
    【python系统学习00】基础知识
    Vue + TypeScript 踩坑总结
    React
    我的电子书
    React
    React
  • 原文地址:https://www.cnblogs.com/zhufanyu/p/11748213.html
Copyright © 2011-2022 走看看