有些时候须要确实进程内部当前运行着多少线程,那么如下几个方法值得一用。java
根据进程号进行查询两种方式:centos
$ pstree -p 68919 java(68919)─┬─{java}(68920) ├─{java}(68921) ├─{java}(68922) ├─{java}(68923) ├─{java}(68924) ├─{java}(68925) ├─{java}(68926) ├─{java}(68927) ├─{java}(68928) ├─{java}(68929) ├─{java}(68930) ├─{java}(68935) ├─{java}(68936) ├─{java}(68937) ├─{java}(68938) ├─{java}(68939) ├─{java}(68940) ├─{java}(68941) ├─{java}(68942) ├─{java}(68943) ├─{java}(68944) ├─{java}(68945) ├─{java}(68946) ├─{java}(68947) ├─{java}(68948) ├─{java}(68949) ├─{java}(68950) ├─{java}(68951) └─{java}(68952)
2.根据进程名字进行查询:bash
# pstree -p `ps -e | grep server | awk '{print $1}'`线程
# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -lcode
这里利用了管道和命令替换,server
关于命令替换,就是说用``括起来的命令会优先执行,而后以其输出做为其余命令的参数,进程
上述就是用 ps -e | grep server | awk '{print $1}' 的输出(进程号),做为 pstree -p 的参数class
管道和命令替换的区别是:awk
管道:管道符号"|"左边命令的输出做为右边命令的输入grep
命令替换:将命令替换符"``"中命令的输出做为其余命令相应位置的参数