项目中用到的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 19135java(19135)─┬─{java}(19136) ├─{java}(19137) ....... └─{java}(13578)[root@xqsj_web2 ~]# pstree -p 19135|wc -l46 //由于第一行包括了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.00Tasks: 47 total, 0 running, 47 sleeping, 0 stopped, 0 zombieCpu(s): 0.2%us, 0.1%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 8058056k total, 7718656k used, 339400k free, 354216k buffersSwap: 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 -l47 3)通过查看/proc/pid/statusproc伪文件系统,它驻留在/proc目录,这是最简单的方法来查看任何活动进程的线程数。/proc目录以可读文本文件形式输出,提供现有进程和系统硬件相关的信息如CPU、中断、内存、磁盘等等。 [root@xqsj_web2 ~]# cat /proc/19135/statusName: javaState: S (sleeping)Tgid: 19135Pid: 19135PPid: 1TracerPid: 0........Threads: 47 //这里显示的是进程创建的总线程数。输出表明该进程有47个线程。SigQ: 1/62793SigPnd: 0000000000000000ShdPnd: 0000000000000000.......voluntary_ctxt_switches: 1nonvoluntary_ctxt_switches: 1 或者,也可以在/proc//task中简单的统计子目录的数量,如下所示:[root@xqsj_web2 ~]# ll /proc/19135/task总用量 0dr-xr-xr-x 6 root root 0 6月 14 17:57 11553......[root@xqsj_web2 ~]# ll /proc/19135/task|wc -l48 这是因为,对于一个进程中创建的每个线程,在/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

浙公网安备 33010602011771号