linux – 如何使用给定的模式来拖尾最新的日志文件
我使用一些日志系统,每小时创建一个日志文件,如下所示: 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-kernel – 如何在解压缩失败时找到ARM Linux入口点?
- PDF中需要Arial字体(BIRT pdf渲染器,Linux)
- linux – 为什么clock_gettime(CLOCK_REALTIME,..)的调用延
- zsh提示 – 检查是否有任何后台作业
- 是否可以让cmake构建文件(CMakeLists.txt)不在CLion的root中
- c – 如何以编程方式获取linux中设备/分区的uuid?
- 如何将父子进程保持在同一核心上
- linux – SETENV:Bad:$($)中的修饰符
- 如何确保我的Linux程序不产生核心转储?
- gdb – 我有一个没有使用调试符号构建的可执行文件的核心转