三种方法:
推荐2,3比较清晰
1. 使用top命令,具体用法是 top -H
加上这个选项,top的每一行就不是显示一个进程,而是一个线程。
2. 使用ps命令,具体用法是 ps -xH
这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。
3. 使用ps命令,具体用法是 ps -m PID
这样可以看到指定的进程产生的线程数目。
4. pstree 命令,查看进程和线程的树形结构关系。
5. ps 命令,-L参数显示进程,并尽量显示其LWP(线程ID)和NLWP(线程的个数)。
ps -eLf | grep qemu
6. ps命令还可以查看线程在哪个CPU上运行
ps -eo ruser,pid,ppid,lwp,psr,args -L | grep xxxxxx
7. top 命令,其中H命令可以显示各个线程的情况。(在top命令后,按H键;或者top -H)
在top中也可以查看进程(进程)在哪个CPU上执行的。
执行top后,按f,选中P = Last used cpu (SMP)),然后按空格或回车退出设置,在top的显示中会多出P这一列是最近一次运行该线程(进程)的CPU. 有些终端宽度不够不会显示,需要去掉一列。还有s可以设置排序。

更进一步,其实一些系统监控工具,在本质上也是读取的系统产生的文件罢了。比如说进程这个事情,
现在假设有进程号为 5000 的进程,查看这个进程的所有具体信息,在哪查看呢?
看看这个目录吧,/proc/5000/ 这里面有你所有想要的。其实stat代表着当前的一些信息。

使用ps命令来查看进程的时候,进程状态分别对应的含义如下:

D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生
R 正在运行或可运行(在运行队列排队中)
S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行
W 正在换页(2.6.内核之前有效)
X 死进程 (未开启)
Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的
< 高优先级(not nice to other users)
N 低优先级(nice to other users)
L 页面锁定在内存(实时和定制的IO)
s 一个信息头
l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)
+ 在前台进程组