Torres-tao  

工作中经常遇到这样的问题:某台服务器的CPU使用率飙升,通过top命令查看是某个程序(Java)占用的CPU比较大,需要查询Java各个进程下的线程数数量。可以通过以下一组命令组合实现:

for pid in $(ps -ef | grep “java” | grep -v grep | awk '{print $2}');do echo ${pid} > /tmp/a.txt;cat /proc/${pid}/status | grep Threads > /tmp/b.txt;paste /tmp/a.txt /tmp/b.txt;
done | sort -k3 -rn
  • for pid in $(ps -ef | grep “java” | grep -v grep | awk '{print $2}'):获取${pid}变量的Java进程的PID号
  • echo ${pid} > /tmp/a.txt:将Java进程的PID号都打印到/tmp/a.txt文件中
  • cat /proc/${pid}/status | grep Threads > /tmp/b.txt:将各个PID进程号下的线程信息打印到/tmp/b.txt文件中
  • paste /tmp/a.txt /tmp/b.txt:以列的形式展示a.txt和b.txt文件中的信息
  • sork -k3 -rn:对输出的信息进行排序。其中,-k3表示以第3列进行排序,-rn表示降序排列
posted on 2024-12-30 19:56  雷子锅  阅读(29)  评论(0编辑  收藏  举报