张紫炜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和端口号关系也还有其它的有趣的办法,欢迎大家在留言处指教。
如果我的回答对你有点价值,请莫忘点赞加关注,谢谢!欢迎在评论区发表各种意见。