Linux查看某个进程的线程

方法一:PS

在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。

ps -T -p <pid>

“SID”栏表示线程ID,而“CMD”栏则显示了线程名称。

方法二: Top

top命令可以实时显示各个线程情况。要在top输出中开启线程查看,请调用top命令的“-H”选项,该选项会列出所有Linux线程。在top运行时,你也可以通过按“H”键将线程查看模式切换为开或关。

top -H

要让top输出某个特定进程<pid>并检查该进程内运行的线程状况:

top -H -p <pid>

 

方法3 :

ps -Lf

$ ps -Lf 4551

UID        PID  PPID   LWP  C NLWP STIME TTY      STAT   TIME CMD

work      4551 22670  4551  2    7 16:30 pts/2    Sl+    0:02 ./ad_preprocess

work      4551 22670  4552  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

work      4551 22670  4553  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

work      4551 22670  4554  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

work      4551 22670  4555  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

work      4551 22670  4556  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

work      4551 22670  4557  0    7 16:30 pts/2    Sl+    0:00 ./ad_preprocess

进程共启动了7个线程

linux上进程有5种状态:

1. 运行(正在运行或在运行队列中等待)

2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)

3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)

4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)

5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)


ps工具标识进程的5种状态码:

D 不可中断 uninterruptible sleep (usually IO)

R 运行 runnable (on run queue)

S 中断 sleeping

T 停止 traced or stopped

Z 僵死 a defunct (”zombie”) process

 

Linux查看进程树

1. pstree

pstree以树结构显示进程

$ pstree -p work | grep ad

sshd(22669)---bash(22670)---ad_preprocess(4551)-+-{ad_preprocess}(4552)

                                                |-{ad_preprocess}(4553)

                                                |-{ad_preprocess}(4554)

                                                |-{ad_preprocess}(4555)

                                                |-{ad_preprocess}(4556)

                                                `-{ad_preprocess}(4557)

 

work为工作用户,-p为显示进程识别码,ad_preprocess共启动了6个子线程,加上主线程共7个线程

 

查看线程信息:

jstack pid


技术链接