Linux如何快速定位监听的端口对应的进程?

张紫炜zz


老胡的做法

Linux通过端口号看来查询定位监听这个端口的进程要使用lsof命令;反之通过进程的PID查询其占用的端口号要使用netstat命令。需要注意的是,netstat命令在有些发行版的系统中不是预装的,如果没有预装的话,需要安装net-tools这个工具包。

使用lsof快速通过端口定位占用进程的PID

lsof本身的功能是查看打开某个文件的进程PID,它有一个选项-i,可以指定一个端口号,根据端口号查询使用这个端口号的进程PID。例如:

lsof -i:10808

这样就得到了两个进程在监听10808这个端口,一个是PID为4053的chrome,一个是PID为19697的v2ray。

如果希望能进一步查看这两个进程的运行状态和启动参数,可以使用

ps -aux | grep 进程号

这样就得到了对应PID的进程的具体情况,包括可执行程序的路径、启动的参数、运行的时间、启动进程的用户等等。

-i4和-i6两个命令选项分别指定的是ipv4的端口和ipv6的端口。

使用netstat查看进程占用的端口号

不知道哪些进程占用了哪些端口,可以使用netstat命令来进行查看。

使用netstat命令时,一般常用l、t、n、p这三个选项的组合。

  • l代表结果显示包含被监听的端口;

  • t表示结果包含TCP协议的连接;

  • n代表结果显示使用ip地址而不是主机名或域名;

  • p代表结果显示程序的进程号PID和程序名。

所以,查看所有进程占用的端口号就是:

netstat -lntp

如果只对其中的v2ray进程感兴趣,可以加过滤:

netstat -lntp|grep v2ray

这样就把特定程序所监听的端口号查询出来了。

总结一下,查询PID和端口号的对应关系,PID→端口号使用lsof,端口号←PID使用netstat。这两个命令还有很多其它的玩法,查询PID和端口号关系也还有其它的有趣的办法,欢迎大家在留言处指教。

如果我的回答对你有点价值,请莫忘点赞加关注,谢谢!欢迎在评论区发表各种意见。

本文为作者原创,严禁转载,违者必究。


分享到:


相關文章: