服务器日志往往使我们排查问题很好的帮手,那么如何快速查询需要的信息,就需要我们掌握了。
这里记录一下日常使用较多的几个查看日志的命令:
1、查找文件所在位置
根据文件名搜索文件,最常用的就是根据文件名进行搜索了:
在根目录下搜索*.jar文件结尾的文件 find / -name *.jar
在当前文件夹下搜索文件名中包含log的文件: find . -name *log*
find命令用于查找文件,后面的“."代表当前目录,-name是find命令的参数,后面接要搜索的文件名,可用*代替模糊搜索。
查找文件不能用grep,grep命令用于在一个或多个文件中查找关键字(可以是字符串,也可以是正则表达式),而不是查找文件。
其次,Linux下查找文件可以用whereis、locate或者find命令。如果是快速搜索文件,最好是用whereis或者locate命令,它们的查找速度要比find命令快很多,这是因为在Linux系统中有个数据库,记录了系统内的所有文件,而whereis和locate命令就是在这个数据库中查找,并没有实际查找硬盘,而数据库查找往往是非常快的;而find命令是直接查找硬盘,如果硬盘文件比较多,就比较费时间。
注意一点:whereis和locate命令的数据库是一天更新一次,所以有时候会找到已经删除的文件,还会有找不到最新刚刚创建文件的情况,当明明记得有却找不到时,就用find命令来查找。
最后,根据你的问题,查找当前目录文件,可以在当前目录下执行find命令的-name参数。
find用法:
find 要查找的路径 参数
-name参数:指定要查找的文件名
-user参数:指定要查找的文件所属用户
-type参数指定查找文件的类型,分别有d目录、l连接文件、s socket文件等
2、查看文件中特定内容和所在行号
这里使用log.log
文件作为查看目标。
实时显示日志内容: tail -f log.log
显示最后10行的内容: tail -n 10 log.log
搜索日志中计修杰
所在行号:cat -n log.log | grep '计修杰'
3、查看特定行周围的日志
sed
命令: sed -n '10,20p' filename
这样就可以查看第10到20行的内容了。
地址是逗号分隔的,那么需要处理的地址是这两行之间的范围(包括这两行在内)。范围可以用数字、正则表达式、或二者的组合表示。
cat
命令:cat filename | head -n 10 | tail -n +10