已知端口号查询占据该端口的进程详细信息

场景:现在知道一个应用的对应端口号11001,我们想要知道该端口号进程启动的信息(启动命令,启动时间,应用当前状态,CPU使用情况等等)

  1. 用如下命令获取端口占用状态
$ netstat -anp|grep 11001
tcp        0      0 :::11001                    :::*                        LISTEN      19983/./livestream

其中19983/./livestream就是端口占用的进程和应用名。
2. 然后依据进程号查进程信息

$ ps -ef|grep 19983
root      19983      1  0  2017 ?        00:21:11 ./livestream -c application.conf -log_dir ./logs/
root     186277 174428  0 11:15 pts/1    00:00:00 grep 19983

  通过-ef选项得到的只有所属用户、进程pid、父进程pid、进程级别、启动时间、启动进程的终端名、进程占用CPU的时间、进程启动命令。
也可以通过如下命令查看自定义内容:

$ ps -eo pid,ppid,lstart,time,stat,nice,cmd|grep 19983
19983      1 Fri Sep 29 10:36:05 2017 00:21:11 Sl     0 ./livestream -c application.conf -log_dir ./logs/

  但是以上结果中,虽然能够查看到启动命令,但是具体这个进程对应的应用启动的脚本在哪里的绝对路径无法获知!!对此我们需要查看/proc/下的该进程的详细信息!!
3. 查看/porc/pid下进程的详细信息

$ cd /proc/19983
$ ls -lrt
total 0
-r--r--r--  1 root root 0 Jun  4 10:53 status
-r--r--r--  1 root root 0 Jun  4 10:53 cmdline
-r--r--r--  1 root root 0 Jun  4 10:54 wchan
dr-xr-xr-x 54 root root 0 Jun  4 10:54 task
-r--r--r--  1 root root 0 Jun  4 10:54 syscall
-r--r--r--  1 root root 0 Jun  4 10:54 statm
-r--r--r--  1 root root 0 Jun  4 10:54 stat
-r--r--r--  1 root root 0 Jun  4 10:54 stack
-r--r--r--  1 root root 0 Jun  4 10:54 smaps
-r--r--r--  1 root root 0 Jun  4 10:54 sessionid
-r--r--r--  1 root root 0 Jun  4 10:54 schedstat
-rw-r--r--  1 root root 0 Jun  4 10:54 sched
lrwxrwxrwx  1 root root 0 Jun  4 10:54 root -> /
-r--r--r--  1 root root 0 Jun  4 10:54 personality
-r--r--r--  1 root root 0 Jun  4 10:54 pagemap
-rw-r--r--  1 root root 0 Jun  4 10:54 oom_score_adj
-r--r--r--  1 root root 0 Jun  4 10:54 oom_score
-rw-r--r--  1 root root 0 Jun  4 10:54 oom_adj
-r--r--r--  1 root root 0 Jun  4 10:54 numa_maps
dr-x--x--x  2 root root 0 Jun  4 10:54 ns
dr-xr-xr-x  7 root root 0 Jun  4 10:54 net
-r--------  1 root root 0 Jun  4 10:54 mountstats
-r--r--r--  1 root root 0 Jun  4 10:54 mounts
-r--r--r--  1 root root 0 Jun  4 10:54 mountinfo
-rw-------  1 root root 0 Jun  4 10:54 mem
-r--r--r--  1 root root 0 Jun  4 10:54 maps
-rw-r--r--  1 root root 0 Jun  4 10:54 loginuid
-rw-------  1 root root 0 Jun  4 10:54 limits
-r--------  1 root root 0 Jun  4 10:54 io
dr-x------  2 root root 0 Jun  4 10:54 fdinfo
dr-x------  2 root root 0 Jun  4 10:54 fd
lrwxrwxrwx  1 root root 0 Jun  4 10:54 exe -> /xxx/xxx/xxx/xxxx/livestream
-r--------  1 root root 0 Jun  4 10:54 environ
lrwxrwxrwx  1 root root 0 Jun  4 10:54 cwd -> /xxx/xxx/xxx/xxxx
-r--r--r--  1 root root 0 Jun  4 10:54 cpuset
-rw-r--r--  1 root root 0 Jun  4 10:54 coredump_filter
-rw-r--r--  1 root root 0 Jun  4 10:54 comm
--w-------  1 root root 0 Jun  4 10:54 clear_refs
-r--r--r--  1 root root 0 Jun  4 10:54 cgroup
-r--------  1 root root 0 Jun  4 10:54 auxv
-rw-r--r--  1 root root 0 Jun  4 10:54 autogroup
dr-xr-xr-x  2 root root 0 Jun  4 10:54 attr

status:记录了进程的详细状态信息,如进程应用名、进程线程数、进程状态等等。
cmdline:记录的记时ps -eo 中的cmd参数对应输出的相对路径下的进程启动执行命令。
task: 这是一个目录,里面有若干子目录,记录的是这个进程对应的线程信息,具体如下:

$ cd task/
$ ls
130783  19983  19986  20008  21012  21015  22963  27035  29023  32416  35691  38779  4494   51338  55752  62816  78834  97445
142480  19984  19987  21006  21013  22961  23950  27036  29024  34264  37120  41864  46833  51851  57351  64859  80842
177430  19985  19996  21011  21014  22962  23951  28953  32415  34265  37121  43712  48682  53947  61799  78003  91941

  以上task下的每一个文件夹中记录的都是每个线程的信息,文件名就是线程的ID,进入其中就可以查看该进程启动的线程的详细信息:

$ cd 34265
$ ls -lrt
total 0
-r--r--r-- 1 root root 0 Jun 12 15:51 wchan
-r--r--r-- 1 root root 0 Jun 12 15:51 syscall
-r--r--r-- 1 root root 0 Jun 12 15:51 status
-r--r--r-- 1 root root 0 Jun 12 15:51 statm
-r--r--r-- 1 root root 0 Jun 12 15:51 stat
-r--r--r-- 1 root root 0 Jun 12 15:51 stack
-r--r--r-- 1 root root 0 Jun 12 15:51 smaps
-r--r--r-- 1 root root 0 Jun 12 15:51 sessionid
-r--r--r-- 1 root root 0 Jun 12 15:51 schedstat
-rw-r--r-- 1 root root 0 Jun 12 15:51 sched
lrwxrwxrwx 1 root root 0 Jun 12 15:51 root -> /
-r--r--r-- 1 root root 0 Jun 12 15:51 personality
-r--r--r-- 1 root root 0 Jun 12 15:51 pagemap
-rw-r--r-- 1 root root 0 Jun 12 15:51 oom_score_adj
-r--r--r-- 1 root root 0 Jun 12 15:51 oom_score
-rw-r--r-- 1 root root 0 Jun 12 15:51 oom_adj
-r--r--r-- 1 root root 0 Jun 12 15:51 numa_maps
dr-x--x--x 2 root root 0 Jun 12 15:51 ns
-r--r--r-- 1 root root 0 Jun 12 15:51 mounts
-r--r--r-- 1 root root 0 Jun 12 15:51 mountinfo
-rw------- 1 root root 0 Jun 12 15:51 mem
-r--r--r-- 1 root root 0 Jun 12 15:51 maps
-rw-r--r-- 1 root root 0 Jun 12 15:51 loginuid
-rw------- 1 root root 0 Jun 12 15:51 limits
-r-------- 1 root root 0 Jun 12 15:51 io
dr-x------ 2 root root 0 Jun 12 15:51 fdinfo
dr-x------ 2 root root 0 Jun 12 15:51 fd
lrwxrwxrwx 1 root root 0 Jun 12 15:51 exe -> /xxx/xxx/xxx/xxx/livestream
-r-------- 1 root root 0 Jun 12 15:51 environ
lrwxrwxrwx 1 root root 0 Jun 12 15:51 cwd -> /xxx/xxx/xxxx
-r--r--r-- 1 root root 0 Jun 12 15:51 cpuset
-rw-r--r-- 1 root root 0 Jun 12 15:51 comm
-r--r--r-- 1 root root 0 Jun 12 15:51 cmdline
--w------- 1 root root 0 Jun 12 15:51 clear_refs
-r--r--r-- 1 root root 0 Jun 12 15:51 cgroup
-r-------- 1 root root 0 Jun 12 15:51 auxv
dr-xr-xr-x 2 root root 0 Jun 12 15:51 attr

  到此,关于进程的线程信息已经可以获取到,由于篇幅限制在此暂时不对这里的线程信息进行解释,有兴趣的可以关注后期内容或者自行百度。接着上述解释进程目录/proc/pid下task之后的目录内容。
statm:进程从起点开始的内存使用状况记录
stat:包含了从进程启动开始后进程所有CPU活跃的信息
root -> /:链接到进程的根目录为/
exe -> /xxx/xxx/xxx/xxx/livestream:显示的就是当前进程启动程序的绝对路径
  其它文件的详细信息解析参考:https://blog.csdn.net/enweitech/article/details/53391567
至此,我们就完成了通过端口->获取进程号->获取进程信息的任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值