前言
当我们的java项目上线后,一般的java项目都是部署到linux环境的,如果生产出现问题,就需要我们有能力在linux系统上查找问题所在,而常见的查找问题的方式就是看log日志,看看哪个地方出现异常,再根据异常情况进行代码修改;以下命令都是查询日志文件内容可以用到的命令,使用这些工具可以更快地帮我们找到问题所在;
find 查找某个文件
命令为: find / -name fileName
find
:查找文件的命令/
: 从根目录开始查找,会一往所有的子目录一直查询,如果要从当前目录开始查找,这样写find ./ -name fileName
-name
:根据名称模糊查询fileName
需要查询的文件名称
模糊匹配文件
find / -name fileName*
grep命令—-查找文件内容
linux系统中,利用grep打印匹配的上下几行
grep -5 'parttern' inputfile
//打印匹配行的前后5行grep -C 5 'parttern' inputfile
//打印匹配行的前后5行grep -A 5 'parttern' inputfile
//打印匹配行的后5行grep -B 5 'parttern' inputfile
//打印匹配行的前5行
另外,grep命令还可以和其他命令组合 一起使用,就像这样
tail -10f xxx.log |grep -5 '%s*'
// 查看xxx日志中匹配某字符串的后面5行ps -ef | grep java
// 查询所有带java字符的进程
head命令 查看文件内容头几行
head fileName
:打印文件内容头10行内容,等同于命令:head -n 10 fileName
;head -n 50 fileName
:打印文件内容前50行;head -n 50 fileName >> head.txt
:将文件前50行的内容保存到head.txt里面
tail命令 查看文件内容末尾几行
tail fileName
//打印文件末尾10行内容,等同于命令:tail -n 10 fileName
tail -n 50 fileName
,打印文件末尾50行内容tail -n +50 fileName
,打印文件从第50行开始一直到末尾的内容tail -f fileName
,持续跟踪文件的增长情况,实时输出文件的更新内容;当文件改名或被删除,则跟踪停止;常用于查看实时日志情况;可以简写为tailf fileName
tail -F fileName
: 注意这里是大写的F, ,持续跟踪文件的增长情况,实时输出文件的更新内容;并保持重试,当文件改名或被删除后,后面又创建了相同的文件,则会继续跟踪;tail -f -s 10 fileName
:每次间隔10秒打印一次文件的最新内容tail -n 50 fileName >> tail.txt
:将文件末尾50行的内容保存到tail.txt文件中tail -c 50 fileName
:打印文件末尾50个字节的字符
cat命令 升序查看文件所有内容
如果文件太大,慎用cat命令,因为会将文件内的所有内容都打印出来;
cat -n fileName
:从1开始对文件内容的每一行输出行号cat -b fileName
:从1开始对文件内容的每一行输出行号,和-n相似,不过会对空行不编号cat -s fileName
:当遇到有连续两行以上的空白行,就代换为一行的空白行。cat -E fileName
:在每行结束处显示 $。cat -n textfile1 > textfile2
:把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里cat fileName | grep VM
:查找文件内所有带有VM
字符的行cat fileName | grep -2 VM
:查找文件内所有带有VM
字符的行和前后2行;
tac命令 倒序查看文件所有内容
tac和cat使用方法相同,区别是cat升序展示,tac倒叙展示,其实cat字母反过来就是tac,cat
和tac
命令执行对比图
more命令 翻页展示
more命令可以将文件内容分页展示,空格键:space
查看下一页,B键
查看上一页;需要注意的是more命令不能直接定位到末尾开始翻页。
more fileName
:默认根据窗口大小,一页一页地显示文件内容;more -10 fileName
: 翻页时每页显示10行more +10 fileName
:从第10行开始分页more -d fileName
:提示,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果你按错键了会提示: [Press ‘h’ for instructions.] ,按下H
键会展示帮助信息,告诉你有哪些可以使用的命令;more -l fileName
:取消遇见特殊字元 ^L(送纸字元)时会暂停的功能more -f fileName
:计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)more -p fileName
:不以卷动的方式显示每一页,而是先清除萤幕后再显示内容(不加-p时下一页上一页都是追加在后面展示的)more -c fileNme
:不以卷动的方式显示每一页,而是先显示内容后在清除萤幕(-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料,肉眼看不出区别)more -s fileName
: 当遇到有连续两行以上的空白行,就合并为一行的空白行more +/exception fileName
:在每个文档显示前搜寻该字串(exception),然后从该字串之后开始显示more fileName1 fileName2
: 展示多个文件内容,到达第一个文件末尾时,按下空格键将自动翻页到下一个文件的展示more -u fileName
:不显示下引号输出,百度了下回车旁边的就是下引号,其实就是单引号;
less 命令
less命令和more命令类似,但使用 less 可以随意浏览文件,但若使用了 less 时,就可以使用[pageup]
和[pagedown]
等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less -b 1024 fileName
:设置缓冲区大小less -e fileName
:当文件显示结束后,再往后翻页将会自动离开less -f fileName
: 强迫打开特殊文件,例如外围设备代号、目录和二进制文件less -i fileName
:搜索时忽略大小写,搜索命令在下面会提到less -N fileName
:展示每行的行号less -s fileName
: 当遇到有连续两行以上的空白行,就合并为一行的空白行less -m fileName
:查看进度,以百分比的方式展示,和more命令最下面的百分比类似。
less 命令内常用操作
符号 | 描述 |
---|---|
/字符串 | 向下搜索“字符串”的功能 |
?字符串 | 向上搜索“字符串”的功能 |
n | 重复前一个搜索(与 / 或 ? 有关) |
N | 反向重复前一个搜索(与 / 或 ? 有关) |
b | 向前翻一页 |
d | 向后翻半页 |
q | 退出 less 命令 |
空格键 | 向后翻一页 |
向上键 | 向上翻动一行 |
向下键 | 向下翻动一行 |
使用less命令从末尾开始往前翻页
- 先用less命令打开文件
less project.log
按下快捷键
shift + G
跳转到日志末尾处最后一行使用命令
ctrl+b
往前一页一页翻页查看
less的其他命令参考:
- 全屏导航
ctrl + F
: 向前移动一屏ctrl + B
: 向后移动一屏ctrl + D
: 向前移动半屏ctrl + U
: 向后移动半屏
- 单行导航
j
: 向前移动一行k
:向后移动一行
- 其它导航
nl -b a fileName
: 无论是否空行,都展示出行号,和cat -n fileName
命令一样nl -b t fileName
: 如果有空行,空的那一行不显示行号(默认值)nl -n ln fileName
:行号在命令行的最左边展示nl -n rn fileName
:行号在最右边展示,且不加0nl -w 2 fileName
:行号占用的位数;nl -n rz fileName
:行号在最左边展示,加0 。如下图