1、ps
查看进程pid等信息(带上头信息):
ps -ef | head -1 && ps -ef | grep java
查看进程启动时间:
ps -p 100380 -o lstart
ls -l /proc/xxx/exe
同时查看pid和启动时间和cpu内存信息:
ps aux | head -1 && ps aux | grep java
2、查看进程具体执行文件:
ls -l /proc/xx/exe
3、top
i:过滤空闲进程
c:显示进程的绝对路径
e:切换内存单位
1:显示所有cpu
shift+p:按照cpu使用率排序
shift+m:按照内存使用率排序
o:过滤进程,标题栏=xxx,比如COMMAND=java,就可以过滤命令中包含java的进程
u:过滤某个用户的进程
m:切换内存显示方式
t:切换cpu显示方式
H:显示线程信息
4、htop(更高效的top)
h:显示帮助
/:搜索
F4:过滤
l:显示进程打开的文件
s:调用strace跟进进程的系统调用
t:显示树形结构
M:按内存排序
P:按cpu排序
T:按运行时间排序
5、perf(排查用户态cpu高)
top:动态展示
-g:开启调用关系的采样
-p:指定pid
record:记录到文件
report:分析记录文件
sleep:录制指定时间,需要加上-a才会有所有进程
录制20s:perf record -ag sleep 20
6、pidstat
-d 1:每1s输出磁盘读写
-w:上下文切换
-t:线程信息
7、sar
-b:磁盘io统计
-n DEV:网络统计
8、netstat
-l:listen状态
-n:显示ip
-t:tcp
-p:显示pid
-r:显示路由表
-s:显示统计信息
-c:实时监控
8、tcpdump
-i eth0:监听eth0网卡
-n:不解释主机名
tcp:抓取tcp协议
port 80:80端口
9、iostat
-d:显示磁盘 I/O 统计信息
-x:显示扩展的磁盘 I/O 统计信息,包括平均值、扩展设备和分区信息
如果要查看具体进程的io情况,可以使用pidstat -d 1或者iotop
输出字段解释:
10、jmap
heap dump:jmap -dump:format=b,file=./xxx.hprof <pid>
堆内存摘要:jmap -heap <pid>
类实例统计:jmap -histo[:live] <pid>
当无法连接到jvm时,使用gdb:
# 安装gdb,如果机器上有就无需安装
yum install -y gdb
# 设置不限制core dump大小
ulimit -c unlimited
# 生成core dump,文件名叫core,也可以自己起名,100是目标Java进程pid,这个需要根据实际的来,命令执行完毕后会生成一个core.100的core dump
gcore 100 -o core
# 生成堆dump
jmap -dump:format=b,file=heap.hprof `which java` core.100
# 堆dump生成完毕后,将其下载下来,然后导入eclipse Memory Analyzer(MAT)开始分析
11、jstat
垃圾回收:jstat -gc <pid> <interval> <count>
垃圾回收%:jstat -gcutil <pid> <interval> <count>
12、jstack
jstack <pid>:显示线程信息
jstack -l <pid>:包含死锁信息
打印线程的16进展:printf "%x\n" xxx
13、grep
-a:将目标文件视为文本文件进行搜索
-C 3:显示匹配行前后各3行
-A 3:显示匹配行后3行
-B 3:显示匹配行前3行
14、ls
-l:显示详细信息
-a:显示隐藏文件
-t:按照时间排序
-S:按照文件大小排序
-h:自适应单位
15、lsof
-p:列出进程使用的文件
登陆发表评论