我有一个格式为log_name_YY-MM-DD_HH_mm.log
的日志文件。 日志每隔几个小时旋转一次,并创build包含创builddate和时间的新日志。 有时我需要使用tail -f
命令来tail -f
这个日志的实时输出。 日志旋转后,尾巴仍指向旧的文件名,必须手动重新启动与新的文件名。
有没有办法自动切换tail -f
来使用新文件? 在这种情况下, tail -F
选项( tail --follow=name --retry
)不起作用,因为日志的文件名发生更改。
您可以创build一个脚本来在最新的日志文件在后台拖尾,然后定期检查新的日志文件。 如果有新的日志文件,则杀死旧进程并开始拖尾新文件。
就像是:
#!/bin/bash PATTERN='log_name_??-??-??_??_??.log' CURRENT=any_pattern # dummy pattern to start off first tail -f while true; do NEWLOG=`ls -t $PATTERN|head -n1` if [[ $NEWLOG != $CURRENT ]] then kill $TAILPID 2>/dev/null CURRENT=$NEWLOG tail -f $CURRENT & TAILPID=$! fi sleep 1 # check regularly done