linux 怎么查看一个进程的所有线程

linux 怎么查看一个进程的所有线程,第1张

1。 使用top命令,具体用法是 top -H加上这个选项,top的每一行就不是显示一个进程,而是一个线程

2。 使用ps命令,具体用法是 ps -xH

这样可以查看所有存在的线程,也可以使用grep作进一步的过滤。

3。 使用ps命令,具体用法是 ps -mq PID

这样可以看到指定的进程产生的线程数目。

更进一步,其实一些系统监控工具,在本质上也是读取的系统产生的文件罢了。比如说进程这个事情,

看看这个目录吧,/proc/5000/ 这里面有你所有想要的。其实stat代表着当前的一些信息。

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

D 不可中断睡眠 (通常是在IO *** 作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生

R 正在运行或可运行(在运行队列排队中)

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

T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行

W 正在换页(26内核之前有效)

X 死进程 (未开启)

Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的

< 高优先级(not nice to other users)

N 低优先级(nice to other users)

L 页面锁定在内存(实时和定制的IO)

s 一个信息头

l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)

+ 在前台进程组

Linux系统查看某个进程的线程数可以通过ps命令来进行查询。以firefox进程为例。

1、查看firefox的进程pid,如下图所示,firefox的进程pid为3168。

2、查看firefox中的线程数和线程ID,如下图所示,

其中NLWP

列为线程数

LWP列为线程ID,可见firefox有线程数50。

线程: 程序运行流的最小单元,一个程序是有一个或多个线程组成。 作用: cpu线程越多,程序运行越快,或者可以同时运行的程序越多。换句话说,cpu线程越多电脑越不容易卡。同时,CPU支持的线程数越多,说明它的性能越强。

步骤:

1、先右击鼠标右键点击屏幕最下方的任务栏空白处,会d出一个菜单,在菜单中用鼠标左键点击启动任务管理器。

2、然后点击任务管理器的“性能”选项。在“性能”选项的“cpu使用记录”项中有几个方框就说明cpu有几个线程。

cpu线程数不一定等于cpu的核心数,因为有些cpu采用了超线程技术,一个核心可以有两个线程。

3、如果想查看cpu的核心数可以安装一个CPU-Z软件,打开后就可以看见有几个核心和线程。

4、打开安装的CPU-Z软件,在处理器即可看到核心数和线程数。

PS:超线程处理器的cpu线程数不等于cpu的核心数。cpu线程数不一定等于cpu的核心数,因为有些cpu采用了超线程技术,一个核心可以有两个线程。

32为linux系统最大内存地址4G,0-3GB的给用户进程(User Space)使用,3-4GB给内核使用

stack size (kbytes, -s) 10240表示线程堆栈大小

3G/10M=最大线程数,但实际会比这个数小一点,因为程序本身占内存,还有些管理线程

可以使用ulimit -s来设置stack size,设置的小一点开辟的线程就多。

同时/usr/include/bits/local_limh中的PTHREAD_THREADS_MAX限制了进程的最大线程数

/proc/sys/kernel/threads-max中限制了系统的最大线程数

你自己写个简单的代码就能测试出自己系统最大可以开多少线程

#include <unistdh>

#include <stdlibh>

#include <pthreadh>

#include <stdioh>

 

void foo(void param)

{

}

 

 

int main()

{

    int i = 0;

    pthread_t thread;

    while(1)

    {

        if(pthread_create(&thread,NULL,foo,NULL) != 0)

        break;

        i++;

    }

    printf("i=%d\n",i);

    return 0;

}

打开任务管理器, 查看---选择列----线程数 勾起来后,就可以查看到每个程序的线程数了。

或者

using SystemDiagnostics;

ProcessGetCurrentProcess()ThreadsCount;

可获取到线程的数量。

获取正在使用的线程数量:

int n = 0;

foreach (ProcessThread th in ProcessGetCurrentProcess()Threads)

{

if (thThreadState == ThreadStateRunning)

{

n++;

}

}

以上就是关于linux 怎么查看一个进程的所有线程全部的内容,包括:linux 怎么查看一个进程的所有线程、Linux系统如何查看进程的线程数、怎样得到一个应用程序里的线程数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9667802.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存