• 项目中用到的Linux命令


    利用 lsof -p +进程 id 查看该进程打开的文件描述符

    利用lsof -i : +端口号  查看进程的信息

    有些时候需要确定进程内部当前运行了多少线程,查询方法如下:

      
    1)通过pstree命令(根据pid)进行查询:
    [root@xqsj_web2 ~]# ps -ef|grep java     //查找进程pid(比如这里查找java(tomcat)进程的pid)
    [root@xqsj_web2 ~]# pstree -p 19135
    java(19135)─┬─{java}(19136)
                ├─{java}(19137)
                 .......
                └─{java}(13578)
    [root@xqsj_web2 ~]# pstree -p 19135|wc -l
    46     //由于第一行包括了2个线程,所以该进程下一共有47个线程!
      
    或者使用top命令查看(可以查看到线程情况)
    [root@xqsj_web2 ~]# top -Hp 19135       //下面结果中的Tasks 对应的47即是线程的个数
      
    top - 14:05:55 up 391 days, 20:59,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks:  47 total,   0 running,  47 sleeping,   0 stopped,   0 zombie
    Cpu(s):  0.2%us,  0.1%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    Mem:   8058056k total,  7718656k used,   339400k free,   354216k buffers
    Swap:        0k total,        0k used,        0k free,  4678160k cached
      
      PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                      
    19135 root      20   0 5339m 632m 5476 S  0.0  8.0   0:00.00 java                                                                          
    19136 root      20   0 5339m 632m 5476 S  0.0  8.0   0:00.84 java                                                                          
    ......
      
    2)根据ps命令直接查询:
    [root@xqsj_web2 ~]# ps hH p 19135| wc -l
    47
      
    3)通过查看/proc/pid/status
    proc伪文件系统,它驻留在/proc目录,这是最简单的方法来查看任何活动进程的线程数。/proc目录以可读文本文件形式输出,提供现有进程和系统硬件
    相关的信息如CPU、中断、内存、磁盘等等。
      
    [root@xqsj_web2 ~]# cat /proc/19135/status
    Name:   java
    State:  S (sleeping)
    Tgid:   19135
    Pid:    19135
    PPid:   1
    TracerPid:  0
    ........
    Threads:    47                    //这里显示的是进程创建的总线程数。输出表明该进程有47个线程。
    SigQ:   1/62793
    SigPnd: 0000000000000000
    ShdPnd: 0000000000000000
    .......
    voluntary_ctxt_switches:    1
    nonvoluntary_ctxt_switches: 1
      
    或者,也可以在/proc//task中简单的统计子目录的数量,如下所示:
    [root@xqsj_web2 ~]# ll /proc/19135/task
    总用量 0
    dr-xr-xr-x 6 root root 0 6月  14 17:57 11553
    ......
    [root@xqsj_web2 ~]# ll /proc/19135/task|wc -l
    48
      
    这是因为,对于一个进程中创建的每个线程,在/proc/<pid>/task中会创建一个相应的目录,命名为其线程ID。由此在/proc/<pid>/task中目录的总数表示在进程中线程的数目。
     

    netstat - atulnp会显示所有端口和所有对应的程序,用grep管道可以过滤出想要的字段

    -a :all,表示列出所有的连接,服务监听,Socket资料
    -t :tcp,列出tcp协议的服务
    -u :udp,列出udp协议的服务
    -n :port number, 用端口号来显示
    -l :listening,列出当前监听服务
    -p :program,列出服务程序的PID

  • 相关阅读:
    Razor里写函数
    Tuple
    javascript下将字符类型转换成布尔值
    如何成为一名快枪手
    easyUI datagrid 前端假分页
    操作JSON对象
    服务器端将复合json对象传回前端
    将JSON对象转换成IList,好用linq
    操作系统学习笔记三 进程
    如何遍历newtonsoft.json的JObject里的JSON数据
  • 原文地址:https://www.cnblogs.com/developing/p/10888539.html
Copyright © 2020-2023  润新知