如何通过端口号快速定位进程

在工作中经常会遇到需要根据端口号来确认所在进程的场景,一般来说可以使用lsof命令和netstat命令结合来确认,这篇文章通过具体示例来进行使用说明。

场景

需要确认与3000端口关联的应用程序。

环境

liumiaocn:~ liumiao$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.14
BuildVersion:	18A391
liumiaocn:~ liumiao$ uname -a
Darwin liumiaocn 18.0.0 Darwin Kernel Version 18.0.0: Wed Aug 22 20:13:40 PDT 2018; root:xnu-4903.201.2~1/RELEASE_X86_64 x86_64
liumiaocn:~ liumiao$

使用netstat命令

使用netstat命令可以确认出一部分信息,比如如下日志信息

liumiaocn:~ liumiao$ netstat -vanp tcp |grep 3000
tcp4       0      0  192.168.31.242.3000    192.168.31.242.59184   ESTABLISHED 407678 146988   6809      0 0x0102 0x0000010c
tcp4       0      0  192.168.31.242.59184   192.168.31.242.3000    ESTABLISHED 407879 146988    659      0 0x0102 0x00000008
tcp4       0      0  127.0.0.1.3000         127.0.0.1.59182        ESTABLISHED 407679 146988   6809      0 0x0102 0x0000010c
tcp4       0      0  127.0.0.1.59182        127.0.0.1.3000         ESTABLISHED 407879 146988    659      0 0x0102 0x00000008
tcp4       0      0  *.3000                 *.*                    LISTEN      131072 131072   6809      0 0x0100 0x00000106
liumiaocn:~ liumiao$ 

可以看到在3000端口进行监听的有一个进程,其余为和其建立的tcp方式的连接。

使用lsof命令

netstat或者ss只能看到网络连接相关的统计信息,但却无法确认到进程信息,而使用lsof则可以,lsof是list open files的缩写,Linux/Unix下一切皆文件,通过lsof则可确认到所关联的进程PID与关联命令等信息。

liumiaocn:~ liumiao$ lsof -i tcp:3000
COMMAND    PID    USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
Google     659 liumiao   27u  IPv4 0xd12a0c1ca95bdb41      0t0  TCP localhost:59182->localhost:hbci (ESTABLISHED)
Google     659 liumiao   28u  IPv4 0xd12a0c1c9f9ad4c1      0t0  TCP 192.168.31.242:59184->192.168.31.242:hbci (ESTABLISHED)
node      6809 liumiao   22u  IPv4 0xd12a0c1c9a59a1c1      0t0  TCP *:hbci (LISTEN)
node      6809 liumiao   40u  IPv4 0xd12a0c1ca95bd1c1      0t0  TCP localhost:hbci->localhost:59182 (ESTABLISHED)
node      6809 liumiao   42u  IPv4 0xd12a0c1c989c34c1      0t0  TCP 192.168.31.242:hbci->192.168.31.242:59184 (ESTABLISHED)
liumiaocn:~ liumiao$ 

实际上到此处的信息基本上就可以定位到实际上是npm在3000端口启动的应用,而连接显示的部分则是Google的Chrome浏览器通过3000端口的连接。进一步使用ps命令则可以看到在3000端口运行的进程,可以看到是JEECG的vue的前端应用所使用的进程。

liumiaocn:~ liumiao$ ps -ef |grep 6809 |grep -v grep
  501  6809     1   0  5:27AM ??         0:40.06 node /private/tmp/easypack/jeecg/jeecg-boot/ant-design-vue-jeecg/node_modules/.bin/vue-cli-service serve
liumiaocn:~ liumiao$

注意事项

  • 如果在CentOS上,netstat命令的参数稍有不同,使用方式为:netstat -vanp --tcp | grep 3000
  • lsof为二进制文件,拷贝操作系统所需的二进制文件然后赋予执行权限即可使用。
liumiaocn:~ liumiao$ file /usr/sbin/lsof
/usr/sbin/lsof: Mach-O 64-bit executable x86_64
liumiaocn:~ liumiao$
发布了920 篇原创文章 · 获赞 1260 · 访问量 389万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览