【问题标题】:linux tail commandlinux尾部命令
【发布时间】:2011-01-28 05:19:40
【问题描述】:

我不确定这是否可以做到,但使用 linux,你永远不知道它的极限。

我正在跟踪一个 apache 日志:

\#tail -f apachelog.access-log

它得到了我想要的,但我想缩小它返回的范围。这是我会得到的典型行:

2011-01-28T04:20:59-07:00 SERVER03 apache: 10.0.0.1 - - [28/Jan/2011:04:20:59 +0000] "POST /a/ HTTP/1.1" 200 4461 "http://somesite.net/" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"

是否可以过滤我正在跟踪的内容? 有时,我只想查看引用站点。有时我想查看 2 或 3 个其他项目。

【问题讨论】:

    标签: linux logging


    【解决方案1】:

    你可以很容易地执行:

    tail -f apachelog.access-log | grep SERVER03
    

    这只会给你包含字符串SERVER03的行。

    【讨论】:

      【解决方案2】:

      使用 tail 开始。

      $ tail -f logfile | grep 'PATTERN' | less -f
      

      我通常会使用less,然后按^C 来获取冒号提示。搜索什么的。然后输入“F”,less 回到“跟随”模式。

      【讨论】:

      • 我似乎无法让这一系列命令正常工作。我看到了我期望的输出,直到我点击 ^C。在这一点上,我可以告诉我我少了,可以搜索东西/导航/等。但是我似乎无法回到“跟随”模式。 'F' 将 less 置于跟随模式,但终端不会使用来自日志文件的新输入进行更新。任何帮助将不胜感激。
      • 不幸的是 ^C 似乎杀死了 tail 命令,因此结果停止更新。
      【解决方案3】:

      我认为我们可以通过 cut 命令来做到这一点

      【讨论】:

        【解决方案4】:

        tail -f 文件 | egrep ...模式...

        【讨论】:

          【解决方案5】:

          如果您只想实时查看日志的一列,则应考虑将tail -f 输出通过awksedperl 进行管道传输。所有这些都比 SO 更适合 unix.stackexchange.com 上的问题。

          【讨论】:

            猜你喜欢
            • 2020-10-09
            • 2015-02-24
            • 2012-10-31
            • 1970-01-01
            • 2011-05-24
            • 2012-06-18
            • 1970-01-01
            • 2012-03-29
            • 1970-01-01
            相关资源
            最近更新 更多