linux查看java运⾏⽇志,Linux下查看⽇志⽤到的经常使⽤命令tail -n 10 test.log 查询⽇志尾部最后10⾏的⽇志;正则表达式
tail -n +10 test.log 查询10⾏以后的全部⽇志;less
head: tcp
跟tail是相反的,tail是看后多少⾏⽇志;例⼦以下:⼯具
head -n 10 test.log 查询⽇志⽂件中的头10⾏⽇志;ui
head -n -10 test.log 查询⽇志⽂件除了最后10⾏的其余全部⽇志;spa
cat: debug
tac是倒序查看,是cat单词反写;例⼦以下:⽇志
cat -n test.log |grep "debug" 查询关键字的⽇志
2. 应⽤场景⼀:按⾏号查看---过滤出关键字附近的⽇志
1)cat -n test.log |grep "debug" 获得关键⽇志的⾏号
2)⼀般查出错误⽇志 cat error.log | grep 'nick' , 这时候咱们还有个需求就是输出当前这个⽇志的先后⼏⾏:
cat error.log | grep -B 5 'nick' 显⽰nick及前5⾏
cat error.log | grep -A 5 'nick' 显⽰nick及后5⾏
cat error.log | grep -C 5 'nick' 显⽰file⽂件⾥匹配nick字串那⾏以及上下5⾏
cat error.log | grep -n -B10 -A10 5 'nick' 显⽰file⽂件⾥匹配nick字串先后10⾏
3. 应⽤场景⼆:选取⽇志中特定范围进⾏分析
1)cat -n test.log |tail -n +1000|head -n 20 从第1000⾏开始,显⽰20⾏
tail -n +1000表⽰查询1000⾏以后的⽇志
head -n 20 则表⽰在前⾯的查询结果⾥再查前20条记录
2)cat catalina.out | head -n 1400| tail -n +1350 显⽰1350⾏到1400⾏ (实现原理都差很少,就是经过语法糖)
(1)按⽇期截取 :通常在⽇志系统中都会记录打印⽇志的时间,⼀般咱们很是须要查指定时间端的⽇志:
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特别说明:该命令中的两个⽇期值必须是⽇志⽂件中包含的值,不然该命令⽆效.; 先 grep '2014-12-17 16:17:20' test.log 来肯定⽇志中是否有该 时间点
(2)按⾏数截取
sed -n ‘10000,20000p’ test.log
sed -i '/关键词/d' catalina.out 删除包含关键词的⾏ 4.应⽤场景三:⽇志内容特别多,打印在屏幕上不⽅便查看
(1)使⽤more和less命令,
如: cat -n test.log |grep "debug" |more 这样就分页打印了,经过点击空格键翻页
(2)使⽤ & 将其保存到⽂件中,到时能够拉下这个⽂件分析
如:cat -n test.log |grep "debug" &
5:使⽤管道进⾏and or条件处理
and 使⽤管道实现 例如: grep -n '⽇志排查' test.log | grep '⽇志'
or ⽤-E 例如:grep -n -E '⽇志排查|hello' test.log 知⾜两个关键字的均可以出来6:如何看查占⽤cpu最多的进程?
⽅法⼀
核⼼指令:ps
实际命令:
ps H -eo pid,pcpu | sort -nk2 | tail
执⾏效果以下:
[work@test01 ~]$ ps H -eo pid,pcpu | sort -nk2 | tail
31396 0.6
31396 0.6
31396 0.6
31396 0.6
31396 0.6
31396 0.6
31396 0.6
31396 0.6
30904 1.0
30914 1.0
结果:
瞧见了吧,最耗cpu的pid=30914。
画外⾳:其实是31396。
⽅法⼆
核⼼指令:top
实际命令:
top
Shift + t
7:到了最耗CPU的进程ID,对应的服务名是什么呢?
⽅法⼀
核⼼指令:ps
实际命令:
ps aux | fgrep pid
执⾏效果以下:
[work@test01 ~]$ ps aux | fgrep 30914
work 30914 1.0 0.8 309568 71668 ? Sl Feb02 124:44 ./router2 –f
结果:
瞧见了吧,进程是./router2
画外⾳: grep 和fgrep的区别?
⼆者都是搜索⼯具,但功能上有区别。
1,⾸先,grep⽀持的是标准正则表达式。
2,fgrep,不⽀持正则表达式,只⽤于匹配固定字符串。
因此后者要⽐前者速度快,固然同时后者的搜索功能要弱于前者。
⽅法⼆
直接查proc便可。
实际命令:
ll /proc/pid
执⾏效果以下:
[work@test01 ~]$ ll /proc/30914
lrwxrwxrwx 1 work work 0 Feb 10 13:27 cwd -> /home/work/im-env/router2
grep命令查看进程lrwxrwxrwx 1 work work 0 Feb 10 13:27 exe -> /home/work/im-env/router2/router2
画外⾳:这个好,全路径都出来了。
8:如何查看某个端⼝的链接状况?
⽅法⼀
核⼼指令:netstat
实际命令:
netstat -lap | fgrep port
执⾏效果以下:
[work@test01 ~]$ netstat -lap | fgrep 22022
tcp 0 0 29:22022 *:* LISTEN 31396/imui
tcp 0 0 29:22022 29:46642 ESTABLISHED 31396/imui tcp 0 0 29:22022 29:46640 ESTABLISHED 31396/imui ⽅法⼆
核⼼指令:lsof
实际命令:
lsof -i :port
执⾏效果以下:
[work@test01 ~]$ /usr/sbin/lsof -i :22022
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
router 30904 work 50u IPv4 69065770 TCP 29:46638->29:22022 (ESTABLISHED) router 30904 work 51u IPv4 69065772 TCP 29:46639->29:22022 (ESTABLISHED) router 30904 work 52u IPv4 69065774 TCP 29:46640->29:22022 (ESTABLISHED)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论