如何用Shell截取nginx最近10分钟的日志
1个回答
2015-12-19
展开全部
凭感觉,这个问题不太适合用shell脚本,perl之类的脚本做这个工作会更高效一些,无论是开发效率还是运行效率。
用shell的话,tail命令是不合适的,根本不知道从哪行开始截,如果还要计算的话,那就把问题复杂化了。用tac命令就是了,tac logfile | {filter logic} | tac,假如日志文件是下面的格式:
192.168.0.1 - - [20/Jun/2013:17:41:48 +0800] "GET / HTTP/1.1" ...那么可以执行下面的命令:
tac log | awk 'BEGIN{ "date -d \"-10 minute\" +\"%H:%M:%S\"" | getline min10ago } { if (substr($4, 14) > min10ago) print else exit }' | tac这组命令没有考虑日期,只比较时间部分。
用shell的话,tail命令是不合适的,根本不知道从哪行开始截,如果还要计算的话,那就把问题复杂化了。用tac命令就是了,tac logfile | {filter logic} | tac,假如日志文件是下面的格式:
192.168.0.1 - - [20/Jun/2013:17:41:48 +0800] "GET / HTTP/1.1" ...那么可以执行下面的命令:
tac log | awk 'BEGIN{ "date -d \"-10 minute\" +\"%H:%M:%S\"" | getline min10ago } { if (substr($4, 14) > min10ago) print else exit }' | tac这组命令没有考虑日期,只比较时间部分。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询