一、截取时间段
场景1:
截取 2019-06-25 10:10 到 2019-06-25 10:20 之间的日志记录,apollo-service.log 为你要截取的文件名称, new2.log 截取之后保存日志的文件名称。
sed -n '/2019-06-25 10:10/, /2019-06-25 10:20/p' catalina.out > new1.log
sed -n '/2019-06-25 10:20:47/, /2019-06-25 10:26:47/p' catalina.out > new2.log
sed -n '/2019-06-25 10:20:47.728/, /2019-06-25 10:26:47.728/p' catalina.out > new3.log
场景2:
我要查shop-bussiness.log.2018-11-06文件中2018年11月6号11:34至11点37之间的日志信息,可以这么做:
grep '2018-Nov-06 11:3[4-7]' shop-bussiness.log.2018-11-06
二、截取行数
取 catalina.out 文件中的100 - 500 行的日志, new.log 为截取保存之后的文件。
sed -n '100,500'p apollo-service.log > new.log
三、查看前后 N 行的日志
tail -n 10 test.log 查询日志尾部最后10行的日志;
tail -n +10 test.log 查询10行之后的所有日志;
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
场景1:
按行号查看---过滤出关键字附近的日志
cat -n test.log |grep "地形"
cat -n test.log |tail -n +92|head -n 20
tail -n +92表示查询92行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
四、查看gzip压缩日志文件的命令
# 自动解压文件,并将其中文件内容输出
$ zcat applogs.tar.gz
# 自动解压文件,并在其中搜索,用法和grep类似
$ zgrep -a 'error' applogs.tar.gz
五、查看zip压缩日志文件的命令
# zipinfo查看zip文件包含哪些文件
$ zipinfo applogs.zip
Archive: applogs.zip
Zip file size: 9573195 bytes, number of entries: 140
drwxrwxrwx 3.0 unx 0 bx stor 22-Sep-17 12:58 applogs/
-rwxrwxrwx 3.0 unx 99166 tx defN 22-Sep-16 18:20 applogs/demo.2022-09-16.0.log
-rwxrwxrwx 3.0 unx 13177092 tx defN 22-Sep-17 13:37 applogs/demo.2022-09-17.0.log
-rwxrwxrwx 3.0 unx 948 tx defN 22-Aug-09 15:08 applogs/demo.log
...
140 files, 203039002 bytes uncompressed, 9546235 bytes compressed: 95.3%
# zipgrep自动解压文件,并在其中搜索,用法和grep类似
$ zipgrep 'error' applogs.zip
六、查看jar文件的命令
目前,绝大多数java项目都是基于spingboot的,众所周知,spingboot会将项目打包成单个jar文件来部署,但其实jar文件本质上就是zip格式,它相比zip文件只是多了一个META-INF/MANIFEST.MF文件而已,如下:
而很多时候,我们需要确认下jar文件里面的内容,比如我想看一下app.jar里被spingboot内嵌的tomcat的线程池配置大小,可如下查看:
$ zipgrep 'max-thread' app.jar
BOOT-INF/classes/application.yml: max-threads: 500