方法一: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
方法三: Htop
一个对用户更加友好的方式是,通过htop查看单个进程的线程,它是一个基于ncurses的交互进程查看器.该程序允许你在树状视图中监控单个独立线程.
可以用下面的命令将 cpu 占用率高的线程找出来:
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%cpu字段进行排序.这样就可以找到占用处理器的线程了.
查看哪个进程线程占用cpu过高; top / ps -aux, 获得进程号
确定哪个线程占用cpu过高,进入进程号的目录:/proc/pid/task,
在 Linux 下 top 工具可以显示 cpu 的平均利用率(user,nice,system,idle,iowait,irq,softirq,etc.),可以显示每个 cpu 的利用率.但是无法显示每个线程的 cpu 利用率情况,这时就可能出现这种情况,总的 cpu 利用率中 user 或 system 很高,但是用进程的 cpu 占用率进行排序时,没有进程的 user 或 system 与之对应.
查看系统允许的最大线程数:
对于支持多线程的程序如Java,有可能会遇到一个进程无法创建更多线程的情形,其原因多种多样,而OS端可能由此参数造成.
查看系统允许的最大进程数:
ulimit -a 显示当前所有的资源限制
设置限制数量,第一列表示用户,* 表示所有用户
soft nproc :单个用户可用的最大进程数量(超过会警告);
hard nproc:单个用户可用的最大进程数量(超过会报错);
soft nofile :可打开的文件描述符的最大数(超过会警告);
hard nofile :可打开的文件描述符的最大数(超过会报错);
重启后生效
reboot
查询当前某程序的线程数
pstree -p 进程号 | wc -l
管道符号"|"左边命令的输出作为右边命令的输入
永久修改系统最高进程数的方法
vim /etc/sysctl.conf
或者:
然后重启机器.
临时修改的方法:
所以以上都操作完成后,才算是正确修改了max user processes 的值
Linux系统查看某个进程的线程数可以通过ps命令来进行查询.以firefox进程为例.
其中NLWP
列为线程数
linux查看线程阻塞原因:pthread_join一般主线程来调用,用来等待子线程退出,因为是等待,所以是阻塞的,一般主线程会依次join所有它创建的子线程.
①.)执行top命令,或使用-H选项(显示所有线程),找到相关的高CPU的PID.
特点:
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统.伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持.
它除了在服务器方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步.使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要.
Linux不仅系统性能稳定,而且是开源软件.其核心防火墙组件性能高效、配置简单,保证了系统的安全.在很多企业网络中,为了追求速度和安全,Linux不仅仅是被网络运维人员当作服务器使用,甚至当作网络防火墙,这是Linux的一大亮点.
Linux具有开放源码、没有版权、技术社区用户多等特点,开放源码使得用户可以自由裁剪,灵活性高,功能强大,成本低.尤其系统中内嵌网络协议栈,经过适当的配置就可实现路由器的功能.这些特点使得Linux成为开发路由交换设备的理想开发平台.