1

我正在尝试在名称每天更改的文件上使用 tail -f 命令,即当前日期附加到其名称。我试过这样做:

CURRENTDATE=$(date +%Y%m%d.log)

tail -F $CURRENTDATE

但它会将文件CURRENTDATE设置为脚本执行的时间。日期更改时,tail命令有什么方法可以自动切换到新文件?我不能在这里每天使用 crontab 来执行这个命令。基本上我将它与 Flume NG exec 源一起使用。

我真的很感激这方面的一些帮助。

4

3 回答 3

2

当日期更改时,tail 命令本身无法自动切换到具有不同名称的新文件。因此,您必须在适当的时候杀死旧尾巴并开始新的尾巴。

while
    tail -F `date +%Y%m%d.log`& sleep $(expr `date +%s -d'day 0'` - `date +%s`)
do  kill $!
done
于 2014-09-19T13:20:47.457 回答
1

要尾随目录中的最新.log文件:

LASTFILE=$(ls -t *.log | head -1)

tail -F $LASTFILE
于 2013-10-08T13:49:17.107 回答
0

我也在使用 flume-ng exec tailing 旋转日志文件。这是我的解决方案:

originAgent.sources.originSource2.type = exec                                                                                                                                             
originAgent.sources.originSource2.command = locktail_rotate.sh /path/to/test.DATE_ROTATE.log 'date +"%Y%m%d"'

您可以从这里签出 locktail_rotate.sh 。

于 2014-10-12T03:07:14.293 回答