我正在尝试在名称每天更改的文件上使用 tail -f 命令,即当前日期附加到其名称。我试过这样做:
CURRENTDATE=$(date +%Y%m%d.log)
tail -F $CURRENTDATE
但它会将文件CURRENTDATE
设置为脚本执行的时间。日期更改时,tail命令有什么方法可以自动切换到新文件?我不能在这里每天使用 crontab 来执行这个命令。基本上我将它与 Flume NG exec 源一起使用。
我真的很感激这方面的一些帮助。
当日期更改时,tail 命令本身无法自动切换到具有不同名称的新文件。因此,您必须在适当的时候杀死旧尾巴并开始新的尾巴。
while
tail -F `date +%Y%m%d.log`& sleep $(expr `date +%s -d'day 0'` - `date +%s`)
do kill $!
done
要尾随目录中的最新.log
文件:
LASTFILE=$(ls -t *.log | head -1)
tail -F $LASTFILE
我也在使用 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 。