线上查问题的时候有些命令是必备,有必要把一些常用命令总结一下,查找问题一般可以分为系统参数、性能参数、进程、内存、网络、存储、内存和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>:显示线程阻塞/死锁情况