線上查問題的時候有些命令是必備,有必要把一些常用命令總結一下(這類命令和相關參數相當多,只總結自己常用得到的),尋找問題一般可以分為系統參數、績效參數、進程、記憶體、網路、儲存、記憶體和jvm這麼幾類:
系統參數
cat /proc/cpuinfo cpu相關參數
cat /proc/meminfo 記憶體相關參數
cat /proc/loadavg 負載情況
績效參數
1)top
M:按記憶體使用量排序
P:按CPU佔用排序
1:顯示各CPU的使用方式
k:kill進程
o:更多定序
斷行符號:重新整理資料
2)ulimit
ulimit -a:顯示本使用者的系統限制參數
ulimit -Hn <num>:更改最大Hard open file數
ulimit -Sn <num>:更改最大Soft open file數
3)vmstat
vmstat 5 -S m:以5秒的資料重新整理vmstat資料(單位為m)
進程
1)ps
ps aux:顯示所有使用者進程詳情
ps -ef:顯示所有使用者進程詳情另一種風格
如果顯示不全可以通過-w加寬,如ps aux -www
網路
1)netstat
netstat -na:顯示所有網路連接
netstat -nap:顯示所有網路連接,並帶上進程相關資訊
netstat -nat:顯示所有tcp類型的網路連接
netstat -ln:顯示所有監聽狀態的網路連接
儲存
1)df -h:硬碟儲存總體情況
2)du --max-depth=1 -h <路徑>:指定路徑下所有檔案夾的大小(遞迴一層)
3)du -sh <路徑>:指定目錄的大小
記憶體
free -m
值得注意的是:空閑記憶體=free+buffers+cached=total-used
JVM
1)jstat
jstat -gccapacity <jpid>:JVM各區的剩餘狀態
jstat -gcutil <jpid>:JVM各區的佔用情況
jstat -gccause <jpid>:jstat -gcutil基礎加上gc的原因
另外可以指定更新頻率,如-h5 1s:每一秒更新一次,並每隔5條加上header顯示
2)jps
目前正在運行中的java進程
3)jmap
jmap -dump:format=b,file=jmap.log <jpid>:產生heap dump檔案
jmap -heap <jpid>:顯示jvm heap總體情況
jmap -histo:live <jpid> :顯示類執行個體佔用記憶體情況
4)jstack
jstack -l <jpid>:顯示線程阻塞/死結情況
沒有對各命令及參數做詳細的說明,需要深入的就參看相關文檔,暫時就這麼多,有待工作中繼續補充