linux查看java运行日志,Linux下查看日志用到的经常使用命令
tail? -n? 10? test.log ? 查詢?nèi)罩疚膊孔詈?0行的日志;正則表達式
tail -n +10 test.log??? 查詢10行以后的全部日志;less
head: ?tcp
跟tail是相反的,tail是看后多少行日志;例子以下:工具
head -n 10? test.log ? 查詢?nèi)罩疚募械念^10行日志;ui
head -n -10? test.log ? 查詢?nèi)罩疚募俗詈?0行的其余全部日志;spa
cat:?debug
tac是倒序查看,是cat單詞反寫;例子以下:日志
cat -n test.log |grep "debug" ? 查詢關(guān)鍵字的日志
2. 應(yīng)用場景一:按行號查看---過濾出關(guān)鍵字附近的日志
1)cat -n test.log |grep "debug"? 獲得關(guān)鍵日志的行號
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. 應(yīng)用場景二:選取日志中特定范圍進行分析
1)cat -n test.log |tail -n +1000|head -n 20? ?從第1000行開始,顯示20行
tail -n +1000表示查詢1000行以后的日志
head -n 20 則表示在前面的查詢結(jié)果里再查前20條記錄
2)cat catalina.out | head -n 1400| tail -n +1350? 顯示1350行到1400行 (實現(xiàn)原理都差很少,就是經(jīng)過語法糖)
(1)按日期截取 :通常在日志系統(tǒng)中都會記錄打印日志的時間,一般咱們很是須要查找指定時間端的日志:
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)按行數(shù)截取
sed -n ‘10000,20000p’?test.log
sed -i '/關(guān)鍵詞/d' catalina.out? 刪除包含關(guān)鍵詞的行 4.應(yīng)用場景三:日志內(nèi)容特別多,打印在屏幕上不方便查看
(1)使用more和less命令,
如: cat -n test.log |grep "debug" |more???? 這樣就分頁打印了,經(jīng)過點擊空格鍵翻頁
(2)使用 >xxx.txt 將其保存到文件中,到時能夠拉下這個文件分析
如:cat -n test.log |grep "debug"? >debug.txt
5:使用管道進行and or條件處理
and?使用管道實現(xiàn)? ?例如:??grep -n '日志排查' test.log | grep '日志'
or 用-E? ?例如:grep -n -E '日志排查|hello' test.log??知足兩個關(guān)鍵字的均可以找出來
6:如何看查占用cpu最多的進程?
方法一
核心指令:ps
實際命令:
ps H -eo pid,pcpu | sort -nk2 | tail
執(zhí)行效果以下:
[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
結(jié)果:
瞧見了吧,最耗cpu的pid=30914。
畫外音:其實是31396。
方法二
核心指令:top
實際命令:
top
Shift + t
7:找到了最耗CPU的進程ID,對應(yīng)的服務(wù)名是什么呢?
方法一
核心指令:ps
實際命令:
ps aux | fgrep pid
執(zhí)行效果以下:
[work@test01 ~]$ ps aux | fgrep 30914
work 30914 ?1.0 ?0.8 309568 71668 ?? Sl ? Feb02 124:44 ./router2 –conf=rs.conf
結(jié)果:
瞧見了吧,進程是./router2
畫外音:? grep 和fgrep的區(qū)別?
二者都是搜索工具,但功能上有區(qū)別。
1,首先,grep支持的是標準正則表達式。
2,fgrep,不支持正則表達式,只用于匹配固定字符串。
因此后者要比前者速度快,固然同時后者的搜索功能要弱于前者。
方法二
直接查proc便可。
實際命令:
ll /proc/pid
執(zhí)行效果以下:
[work@test01 ~]$ ll /proc/30914
lrwxrwxrwx ?1 work work 0 Feb 10 13:27 cwd -> /home/work/im-env/router2
lrwxrwxrwx ?1 work work 0 Feb 10 13:27 exe -> /home/work/im-env/router2/router2
畫外音:這個好,全路徑都出來了。
8:如何查看某個端口的鏈接狀況?
方法一
核心指令:netstat
實際命令:
netstat -lap | fgrep port
執(zhí)行效果以下:
[work@test01 ~]$ netstat -lap | fgrep 22022
tcp ? ? ? ?0 ? ? ?0 10.58.xxx.29:22022 ? ? ? ? ?*:* ? ? ? ? ? ? ? ? ? ? ? ? LISTEN ? ? ?31396/imui
tcp ? ? ? ?0 ? ? ?0 10.58.xxx.29:22022 ? ? ? ? ?10.58.xxx.29:46642 ? ? ? ? ?ESTABLISHED 31396/imui
tcp ? ? ? ?0 ? ? ?0 10.58.xxx.29:22022 ? ? ? ? ?10.58.xxx.29:46640 ? ? ? ? ?ESTABLISHED 31396/imui
方法二
核心指令:lsof
實際命令:
lsof -i :port
執(zhí)行效果以下:
[work@test01 ~]$ /usr/sbin/lsof -i :22022
COMMAND ? PID USER ? FD ? TYPE ? DEVICE SIZE NODE NAME
router ?30904 work ? 50u ?IPv4 69065770 ? ? ? TCP 10.58.xxx.29:46638->10.58.xxx.29:22022 (ESTABLISHED)
router ?30904 work ? 51u ?IPv4 69065772 ? ? ? TCP 10.58.xxx.29:46639->10.58.xxx.29:22022 (ESTABLISHED)
router ?30904 work ? 52u ?IPv4 69065774 ? ? ? TCP 10.58.xxx.29:46640->10.58.xxx.29:22022 (ESTABLISHED)
總結(jié)
以上是生活随笔為你收集整理的linux查看java运行日志,Linux下查看日志用到的经常使用命令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux脚本定时任务,使用Linux脚
- 下一篇: linux开端口不重启,Linux 防火