1、查看进程运行情况
> top
具体参数说明就不做说明了
上图可以看出我的appdata进程CPU和内存占用偏高,我这里就用这个进程查一下
2、查看指定进程的线程运行详情
top -H -p 10405
这里呢我们就看到了线程的详情
3、简单的查看进程的堆栈信息
gstack 10405 | head -n 20
查看该进程前20行数据
4、通过上面的命令可以跟踪堆栈详情了,但是我们要进行过滤
gstack 10405 | grep 10457 -A 20
通过grep命令我们过滤到了线程是10457的详情,这样就方便我们查看了。
还可以功过线程的16进制ID过滤,方法如下:
echo 'obase=16;[线程id]' | bc或者printf "%x\n" [线程id]
echo 'obase=16;10423' | printf "%x\n" 10423
16进制线程:28b7
下面已查看JAVA进程为例:
jstack [进程id] | grep -A 10 28b7
5、系统调度追踪
strace [-c] [-p pid] [-o file] [--help] [commandd [arg ...]]
使用`strace`命令可以方便查看系统间的调度,且会记录解析命令进程的所有系统调用以及这个进程所收到的所有信号值
总结:
快速定位进程线程占用服务器资源定位方法,简单但是不一定有效,还要根据具体情况分析。