zoukankan      html  css  js  c++  java
  • tail -f 和 -F 的用法

    -f 是--follow[=HOW]的缩写, 可以一直读文件末尾的字符并打印出来.

    "[=HOW]"有两个写法,一个"=descriptor",另一个是"=name", 默认使用的是"descriptor", 如果你跟踪的文件被移动或者改名后, 你还想继续tail它, 你可以使用这个选项.

    举个例子:

    首先启动下面进程

    while [ "true" ] ; do date >> test.log; sleep 1 ; done;

    然后在开一个新的进程,我是新开了一个终端, 起名叫 bash-2

    tail -f test.log

    你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,

    mv test.log test.log1;

    while [ "true" ] ; do date >> test.log1; sleep 1 ; done;

    继续观察bash-2, 发现屏幕在输出test.log2的内容.

    descriptor 虽然是默认的参数,但是一定是最有用的,比如在tail 一个log文件的时候,这个文件很可能是按照日期或者大小滚动, 文件滚动之后这个tail -f命令,就失效了. 我在之前写的一个脚本里面就遇到了这个问题, 这个时候可以使用-F 命令

    -F 是--follow=name --retry的缩写, --follow=name是按照文件名跟踪文件, 可以定期去重新打开文件检查文件是否被其它程序删除并重新建立. --retry这个参数, 保证文件重新建立后,可以继续被跟踪.

    还是上面的例子,

    在bash-1中输入,

    while [ "true" ] ; do date >> test.log; sleep 1 ; done;

    bash-2中,

    tail -F test.log

    bash-3中,

    rm test.log;

    然后看bash-2, 屏幕上依然在继续输出test.log的内容. 如果是在使用-f 时候,那bash-2应该就停止显示log了.

  • 相关阅读:
    Flask-1-03-HelloWorld
    Flask-1-02-安装环境
    Flask-1-01-初识Flask
    Ubuntu解决virtualbox 安装增强包的报错
    ubuntu安装软件has install-snap change in progress错误
    virtualbox
    Nginx 403 Forbidden错误的解决方法
    处理Redis报错:redis.exceptions.ResponseError: MISCONF Redis is configured to save RDB snap
    在Ubuntu18.04上安装MySQL
    Python3 错误、调试和测试
  • 原文地址:https://www.cnblogs.com/xiaoleiel/p/8349673.html
Copyright © 2011-2022 走看看