有些时候需要确实进程内部当前运行着多少线程,那么以下几个方法值得一用。
根据进程号进行查询两种方式:
pstree -p 进程号 (centos下默认没有安装pstree,可通过yum -y install psmisc安装)
top -Hp 进程号
$ 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.根据进程名字进行查询:
# pstree -p `ps -e | grep server | awk '{print $1}'`
# pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l
这里利用了管道和命令替换,
关于命令替换,就是说用``括起来的命令会优先执行,然后以其输出作为其他命令的参数,
上述就是用 ps -e | grep server | awk '{print $1}' 的输出(进程号),作为 pstree -p 的参数
管道和命令替换的区别是:
管道:管道符号"|"左边命令的输出作为右边命令的输入
命令替换:将命令替换符"``"中命令的输出作为其他命令相应位置的参数