06
2018
08

CentOS系统查看程序占用(监听)的端口号

CentOS里面查看某进程使用的端口号,主要有两条想关的命令,一个是lsof -i,另一个是netsta -tunlp,下面我们稍微展开一丁点说一下:


lsof -i

lsof命令全称是list open files,是用来查看当前系统打开文件的工具,Linux架构的系统中一切都是已文件形式存在的,正在运行的程序也不例外,所以这条命令可以查看到所有的进程。

但是这里我们只是想查看正在监听某端口号的进程,所以还需要带一个-i的参数,这个参数的意思是列出所有带有网络套接字(TCP和UDP)的进程,其实也就是我们说的正在监听某端口号的进程了,当然我们可以再带一个端口号,比如lsof -i :22,可以查看正在使用22端口的进程,lsof命令具体的使用方法比较复杂,这里不展开讲述,有兴趣的朋友可以去网上搜索相关lsof命令的文档。

总结一下:

lsof -i:查看所有正在监听网络端口的进程

lsof -i :端口号:查看正在监听某端口号的进程


netstat -tunlp

netstat命令相信大家应该都挺熟悉,因为Windows操作系统下也有这个命令,而且其作用跟Linux下的挺类似。

直接输入这个命令的时候输出的结果一般有两部分,一部分是“Proto Recv-Q Send-Q Local Address”,这里显示的是目前已经建立连接(established状态)的会话,另一部分是“Active UNIX domain sockets (w/o servers)”这一部分比较复杂,在这里我们不展开讲,感兴趣的朋友们可以自己去查找相关资料。

但是我们现在要查看的并不是已经建立连接的会话,而是想查看占用端口的程序,那么就得加上“-tunlp”参数了,这里的“tunlp”其实是个组合参数,“t”和“u”分别表示TCP和UDP,“n”是指不要解析域名,如果不带上这个n的话输出的结果就会是以机器名或者域名取代IP地址,“l”是listening的意思,也就是有监听端口行为的程序,“p”是program的意思,不加p的话输出结果就不显示程序的名称了。

总结一下:

netstat -tunlp:显示系统正在监听TCP和UDP某端口号的程序,并只显示监听的IP地址,且列出对应的程序名称

netstat -tunlp|grep sshd:显示sshd服务正在监听的端口

netstat -tunlp|grep :53:显示正在监听53端口的程序


两者的区别

lsof -i和netstat -tunlp都能查到正在系统中正在监听的端口号以及对应的程序,他们之间的区别主要是在于lsof倾向于以程序本身为视角,从程序的角度列出程序对应占用的端口号,而netstat -tunlp则是以端口号和协议为视角,从网络的角度列出占用端口号对应的程序。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。