项目中用到的Linux命令

Posted developing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目中用到的Linux命令相关的知识,希望对你有一定的参考价值。

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

技术图片

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

技术图片

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

  
1)通过pstree命令(根据pid)进行查询:
[[email protected]_web2 ~]# ps -ef|grep java     //查找进程pid(比如这里查找java(tomcat)进程的pid)
[[email protected]_web2 ~]# pstree -p 19135
java(19135)─┬─{java}(19136)
            ├─{java}(19137)
             .......
            └─{java}(13578)
[[email protected]_web2 ~]# pstree -p 19135|wc -l
46     //由于第一行包括了2个线程,所以该进程下一共有47个线程!
  
或者使用top命令查看(可以查看到线程情况)
[[email protected]_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命令直接查询:
[[email protected]_web2 ~]# ps hH p 19135| wc -l
47
  
3)通过查看/proc/pid/status
proc伪文件系统,它驻留在/proc目录,这是最简单的方法来查看任何活动进程的线程数。/proc目录以可读文本文件形式输出,提供现有进程和系统硬件
相关的信息如CPU、中断、内存、磁盘等等。
  
[[email protected]_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中简单的统计子目录的数量,如下所示:
[[email protected]_web2 ~]# ll /proc/19135/task
总用量 0
dr-xr-xr-x 6 root root 0 6月  14 17:57 11553
......
[[email protected]_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

以上是关于项目中用到的Linux命令的主要内容,如果未能解决你的问题,请参考以下文章

工作中用到的简单linux命令

nginx中用到的kill命令

nginx中用到的kill命令

整理项目中用到的angularjs及其他js代码

node项目中用到的一些模块

近期开发项目中用到的编码小技巧汇总说明