Linux中查看进程的多线程

在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢?

本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:

在我的系统中,用qemu-system-x86_64命令启动了一个SMP的Guest,所以有几个qemu的线程,以此为例来说明。

1. pstree 命令

查看进程和线程的树形结构关系

  1. [[email protected] ~]# pstree | grep qemu
  2. |-terminal-+-bash---qemu-sys---2*[{qemu-system-x8}]
  3. [[email protected] ~]# pstree -p | grep qemu
  4. |-terminal(194)-+-bash(196)---qemu-sys(657)-+-{qemu}(660)
  5. |              |                             `-{qemu}(661)

2. ps 命令

-L参数显示进程,并尽量显示其LWP(线程ID)和NLWP(线程的个数)。

  1. [[email protected] ~]# ps -eLf | grep qemu
  2. root     657 196 657  0 3 13:48 pts/1   00:00:00 qemu-sys -m 1024 -smp 2
  3. root     657 196 660  3 3 13:48 pts/1   00:00:26 qemu-sys -m 1024 -smp 2
  4. root     657 196 661  2 3 13:48 pts/1   00:00:19 qemu-sys -m 1024 -smp 2
  5. root     789  9799 10789  0 1 14:02 pts/0   00:00:00 grep --color=auto qemu

上面命令查询结果的第二列为PID,第三列为PPID,第四列为LWP,第六列为NLWP。

另外,ps命令还可以查看线程在哪个CPU上运行,命令如下:

  1. [[email protected] ~]# ps -eo ruser,pid,ppid,lwp,psr,args -L | grep qemu
  2. root     657 196 657   1 qemu-sys -hda smep-temp.qcow -m 1024 -smp 2
  3. root     657 196 660   1 qemu-sys -hda smep-temp.qcow -m 1024 -smp 2
  4. root     657 196 661   2 qemu-sys -hda smep-temp.qcow -m 1024 -smp 2
  5. root     834  9799 10834   1 grep --color=auto qemu

其中,每一列依次为:用户ID,进程ID,父进程ID,线程ID,运行该线程的CPU的序号,命令行参数(包括命令本身)。

3. top 命令

其中H命令可以显示各个线程的情况。(在top命令后,按H键;或者top -H)

  1. [[email protected] ~]# top -H
  2. top - 14:18:20 up 22:32,  4 users,  load average: 2.00, 1.99, 1.90
  3. Tasks: 286 total,   1 running, 285 sleeping,   0 stopped,   0 zombie
  4. Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
  5. Mem:   3943892k total,  1541540k used,  2402352k free,   164404k buffers
  6. Swap:  4194300k total,      0k used,  4194300k free,   787768k cached
  7. PID USER    PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  8. 660 root      20   0 1313m 188m 2752 S  2.3  4.9   0:46.78 qemu-sys
  9. 661 root      20   0 1313m 188m 2752 S  2.0  4.9   0:39.44 qemu-sys
  10. 867 root      20   0 15260 1312  960 R  0.3  0.0   0:00.07 top
  11. 1 root    20   0 19444 1560 1252 S  0.0  0.0   0:00.34 init
  12. 2 root    20   0     0  0   0 S  0.0  0.0   0:00.02 kthreadd
  13. ....

在top中也可以查看进程(进程)在哪个CPU上执行的。

执行top后,按f,按j(选中* J: P = Last used cpu (SMP)),然后按空格或回车退出设置,在top的显示中会多出P这一列是最近一次运行该线程(进程)的CPU。

  1. PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  P COMMAND
  2. 661 root      20   0 1313m 188m 2752 S  2.3  4.9   0:44.24 3 qemu-sys
  3. 660 root      20   0 1313m 188m 2752 S  2.0  4.9   0:51.74 0 qemu-sys
  4. 874 root      20   0 15260 1284  860 R  0.7  0.0   0:00.32 2 top
  5. 1 root    20   0 19444 1560 1252 S  0.0  0.0   0:00.34 0 init
  6. 2 root    20   0     0  0   0 S  0.0  0.0   0:00.02 1 kthreadd

更多信息,请 man pstree, man top, man ps 查看帮助文档。

注: LWP为轻量级进程(即:线程),(light weight process, or thread) 。

时间: 2024-10-05 21:10:58

Linux中查看进程的多线程的相关文章

Linux中查看进程的多线程pstree, ps -L

Linux中查看进程的多线程 在SMP系统中,我们的应用程序经常使用多线程的技术,那么在Linux中如何查看某个进程的多个线程呢? 本文介绍3种命令来查看Linux系统中的线程(LWP)的情况:在我的系统中,用qemu-system-x86_64命令启动了一个SMP的Guest,所以有几个qemu的线程,以此为例来说明. 1. pstree 命令,查看进程和线程的树形结构关系.  BASH 1 2 3 4 5 [root@jay-linux ~]# pstree | grep qemu |-gn

Linux中查看进程占用内存和系统资源情况的命令

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况... 还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多. top: 主要参数 d:指定更新的间隔,以秒计算. q:没有任何延迟的更新.如果使用者有超级用户,则top命令将会以最高的优先序执行. c:显示进程完整的路径与名称. S:累积模式,

Linux 中查看进程及资源使用情况

原文:Linux 中查看进程及资源使用情况 自带的 top 命令类似于平时我们使用的任务管理器,能够列出当前系统中的进程及资源的使用情况. $ man top top - display Linux tasks 使用起来很简单,不加任何参数的情况下已经很实用了.其输出大致是下面这个样子: top命令的输出界面 按 q 可退出该界面. Tips: top 的输出每 3 秒刷新一次,如果想将画面定格,Mac 下可使用 control + s 来停止刷新,control + q 恢复刷新.当然,还可以

Linux中查看进程及杀死进程命令

Linux中想杀死fcitx进程,然后再重启它. [email protected]:/home/zhangbin# ps -e | grep 'fcitx' 3405 ?        00:00:00 fcitx <defunct> 3415 ?        00:00:02 fcitx   不显示标题 [email protected]:/home/zhangbin# ps -h Warning: bad ps syntax, perhaps a bogus '-'? See http

【Linux】在Linux中查看进程占用的端口号

对于 Linux 系统管理员来说,清楚某个服务是否正确地绑定或监听某个端口,是至关重要的.如果你需要处理端口相关的问题,这篇文章可能会对你有用. 端口是 Linux 系统上特定进程之间逻辑连接的标识,包括物理端口和软件端口.由于 Linux 操作系统是一个软件,因此本文只讨论软件端口.软件端口始终与主机的 IP 地址和相关的通信协议相关联,因此端口常用于区分应用程序.大部分涉及到网络的服务都必须打开一个套接字来监听传入的网络请求,而每个服务都使用一个独立的套接字. 套接字是和 IP 地址.软件端

windows和linux中查看端口占用情况并kill掉对应进程

好几次在不同的情况下遇到 需要查看端口信息 并且kill掉对应进程的情况 相关的参数总是记不全 在这里记录下 以后查看方便 windows中查看正在使用端口的信息netstat -ano|findstr "xxxx"kill 掉对应的进程taskkill /f /t /PID 具体参数信息http://blog.163.com/[email protected]/blog/static/45190050200741222590/ linux中查看正在使用的端口的信息sudo netst

linux 中的进程wait()函数

转载自:http://blog.sina.com.cn/s/blog_7776b9d3010144f9.html 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他, 那么他将变成一个僵尸进程. 但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程, 因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程, 看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init 来接管他,成为他的父进程-- 一个进程在调用exit

Linux下查看进程和线程

在linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册中说:H Show threads as if they were processes 这样可以查看所有存在的线程. 3.ps -mp <PID> 手册中说:m Show threads after processes 这样可以查看一个进程起的线程数. 查看进程 1. top 命令 top命令查看

在 Linux 下查看进程运行时间的命令

对于一个 Linux 系统的新手,该如何在我的 Ubuntu 服务器上查看一个进程(或者,根据进程 id 去查看)已经运行了多久呢?下面兄弟连Linux培训分享给大家好方法. ···你需要使用 ps 命令来查看关于一组正在运行的进程的信息.ps 命令提供了如下的两种格式化选项. etime 显示了自从该进程启动以来,经历过的时间,格式为 [[DD-]hh:]mm:ss. etimes 显示了自该进程启动以来,经历过的时间,以秒的形式. 如何查看一个进程已经运行的时间? 你需要在 ps 命令之后添