欢迎光临
我们一直在努力

linux – 如何使用给定的模式来拖尾最新的日志文件

本站教程收集整理的这篇文章主要介绍了linux – 如何使用给定的模式来拖尾最新的日志文件,本站教程本站vps云服务器觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用一些日志系统,每小时创建一个日志文件,如下所示:

SoftwareLog.2010-08-01-08
SoftwareLog.2010-08-01-09
SoftwareLog.2010-08-01-10

我试图追踪最新的日志文件给出一个模式(例如SoftwareLog *),我意识到:

tail -F (tail --follow=name --retry)

但是只能遵循一个特定的名称 – 而且这些名称按照日期和时间有不同的名称.我尝试过如下:

tail --follow=name --retry SoftwareLog*(.om[1])

但是通配符语句在被传递到尾部之前已经被重新调用,并且不会在每次尾部重试时重新执行.

有什么建议么?

解决方法

[编辑:经过一个快速搜索工具]

您可能想尝试多线 – http://www.vanheusden.com/multitail/

如果你想坚持丹尼斯·威廉姆森的答案(我已经相当于他1),这里是为你填补的空白.

在你的sHell中,运行以下脚本(或者是相当于zsh,在我看到zsh标签之前,我在bash中打了一个):

#!/bin/bash

TARGET_DIR="some/logfiles/"
SymLINK_FILE="SoftwareLog.latest"
SymLINK_PATH="$TARGET_DIR/$SymLINK_FILE"

function getLastModifiedFile {
    echo $(ls -t "$TARGET_DIR" | grep -v "$SymLINK_FILE" | head -1)
}

function getCurrentlySymlinkedFile {
    if [[ -h $SymLINK_PATH ]]
    then
        echo $(ls -l $SymLINK_PATH | awk '{print $NF}')
    else
        echo ""
    fi
}

symlinkedFile=$(getCurrentlySymlinkedFilE)
while true
do
    sleep 10
    lastModified=$(getLastModifiedFilE)
    if [[ $symlinkedFile != $lastModified ]]
    then
        ln -nsf $lastModified $SymLINK_PATH
        symlinkedFile=$lastModified
    fi
done

使用正常方法的背景(再次,我不知道zsh,所以可能会有所不同)…

./updateSymlink.sh 2>& 1>的/ dev / null的

然后tail -F $SymLINK_PATH,这样尾巴就会改变符号链接或文件的旋转.

这有点复杂,但我不知道用尾巴做另一种方法.如果任何人知道一个处理这个的实用程序,那么让他们向前迈进,因为我也喜欢自己看到它 – 默认情况下,jetty这样的应用程序会记录这种方式,并且我总是在cron上运行一个符号链接脚本来补偿为了它.

[编辑:从其中一行删除错误的’j’.你也有一个坏变量名称“lastModifiedFile”不存在,你设置的正确的名称是“lastModified”]

本站总结

以上是本站教程为你收集整理的linux – 如何使用给定的模式来拖尾最新的日志文件全部内容,希望文章能够帮你解决linux – 如何使用给定的模式来拖尾最新的日志文件所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。