我正在尝试对一个文件使用tail-f命令,该文件的名称每天都在变化,即当前日期被附加到其名称之后。我试过这样做:
CURRENTDATE=$(date +%Y%m%d.log) tail -F $CURRENTDATE
但它会把文件和 CURRENTDATE 设置为执行脚本的时间。当日期改变时,tail命令有没有办法自动切换到新文件?我不能每天在这里使用crontab来执行这个命令。基本上我是用flume ng exec源代码。我真的很感激你在这方面的帮助。
CURRENTDATE
chhqkbe11#
我使用flume ng exec跟踪旋转日志文件太多。以下是我的解决方案:
originAgent.sources.originSource2.type = exec originAgent.sources.originSource2.command = locktail_rotate.sh /path/to/test.DATE_ROTATE.log 'date +"%Y%m%d"'
您可以从这里 checkout locktail\u rotate.sh。
ttvkxqim2#
跟踪最近的 .log 目录中的文件:
.log
LASTFILE=$(ls -t *.log | head -1) tail -F $LASTFILE
dz6r00yl3#
当日期更改时,tail命令本身无法自动切换到具有不同名称的新文件。因此,你必须在适当的时候杀掉旧尾巴,开始一条新尾巴。
while tail -F `date +%Y%m%d.log`& sleep $(expr `date +%s -d'day 0'` - `date +%s`) do kill $! done
3条答案
按热度按时间chhqkbe11#
我使用flume ng exec跟踪旋转日志文件太多。以下是我的解决方案:
您可以从这里 checkout locktail\u rotate.sh。
ttvkxqim2#
跟踪最近的
.log
目录中的文件:dz6r00yl3#
当日期更改时,tail命令本身无法自动切换到具有不同名称的新文件。因此,你必须在适当的时候杀掉旧尾巴,开始一条新尾巴。