博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下查看线程数的方法及超过系统线程最大值的报错
阅读量:6281 次
发布时间:2019-06-22

本文共 2831 字,大约阅读时间需要 9 分钟。

linux下查看线程数的方法及超过系统线程最大值的报错

  1. 通过/proc伪文件系统
    说明:
    Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
    基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。
    为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。
    大多数虚拟文件可以使用文件查看命令如cat、more或者less进行查看,有些文件信息表述的内容可以一目了然,但也有文件的信息却不怎么具有可读性。不过,这些可读性较差的文件在使用一些命令如apm、free、lspci或top查看时却可以有着不错的表现。
    ##查看线程数的方法cat /proc/{pid}/status其中Threads后面跟的就是线程数。或者:ls /proc/{pid}/task | wc -l##举例如下cat /proc/27587/statusThreads:    3或:ls /proc/27587/task |wc -l3
  2. 使用top命令
    ##top命令后面跟-H,会打印出所有线程列表top -Htop -H -p {pid}##举例如下top -H -p 27587Tasks:   3 total,   0 running,   3 sleeping,   0 stopped,   0 zombiePID  USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND27587 siterec   20   0 1007m  79m  4772  S    1.7       0.2          203:34.71   python2753 siterec     20   0 1007m  79m  4772  S    0.0       0.2          2:19.32       python27590 siterec   20   0 1007m  79m  4772  S    0.0       0.2          0:00.00       python
  3. 使用ps命令
    ##ps 后面加上H,能打印某个进程的所有线程ps hH p {pid} | wc -l##举例如下PID TTY      STAT   TIME COMMAND17721 pts/1    Sl     0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1    Sl     0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1    Sl     0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader

    使用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的那样)
    + 在前台进程组

  4. 使用pstree命令
    ##打印所有进程及其线程pstree -p ##打印某个进程的线程数pstree -p {pid} | wc -l
  5. 超过系统最大线程数
    ##报错信息:-bash: fork: retry: 没有子进程 (No child process)-bash: fork: retry: 资源暂时不可用(The resource is temporarily unavailable)shell request failed on channel 0##解决方法:cat /etc/security/limits.d/20-nproc.conf或:cat /etc/security/limits.d/90-nproc.conf\*            soft      nproc       1024   // 将此处修改成unlimited或者其他数值,如65535 root       soft      nproc     unlimited

转载于:https://blog.51cto.com/wutengfei/2096943

你可能感兴趣的文章
android 打开各种文件(setDataAndType)转:
查看>>
补交:最最原始的第一次作业(当时没有选上课,所以不知道)
查看>>
Vue实例初始化的选项配置对象详解
查看>>
PLM产品技术的发展趋势 来源:e-works 作者:清软英泰 党伟升 罗先海 耿坤瑛
查看>>
vue part3.3 小案例ajax (axios) 及页面异步显示
查看>>
浅谈MVC3自定义分页
查看>>
.net中ashx文件有什么用?功能有那些,一般用在什么情况下?
查看>>
select、poll、epoll之间的区别总结[整理]【转】
查看>>
CSS基础知识(上)
查看>>
PHP中常见的面试题2(附答案)
查看>>
26.Azure备份服务器(下)
查看>>
mybatis学习
查看>>
LCD的接口类型详解
查看>>
Spring Boot Unregistering JMX-exposed beans on shutdown
查看>>
poi 导入导出的api说明(大全)
查看>>
Mono for Android 优势与劣势
查看>>
将图片转成base64字符串并在JSP页面显示的Java代码
查看>>
js 面试题
查看>>
sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
查看>>
腾讯云下安装 nodejs + 实现 Nginx 反向代理
查看>>