在linux服务器运维、本地开发环境排错过程中,查看网络监听端口是最基础也最常用的操作——不管是排查端口冲突、定位异常外联进程还是确认web、数据库等服务是否正常启动,都需要获取准确的监听端口列表。下面介绍几种linux生态中最主流的查看方法,覆盖不同场景的使用需求。

使用netstat命令:兼容老系统的经典方案
netstat是诞生很早的网络状态查看工具,几乎所有linux发行版都支持,若系统默认没有,可以通过安装`net-tools`包获取。查看所有监听端口的常用命令为`sudo netstat -tulpn`,各参数的作用分别是:-t过滤显示tcp端口、-u过滤显示udp端口、-l仅展示处于监听状态的端口、-p展示占用端口的进程id与程序名称、-n禁用域名解析直接展示ip,大幅提升查询速度。需要注意的是,普通用户权限只能查看自身有权限访问的进程,加sudo获取root权限才能看到系统全量的监听端口信息,输出结果中`local address`列的冒号后就是监听端口,`pid/program name`列直接对应占用进程,非常直观。

使用ss命令:效率更高的现代首选方案
ss是`iproute2`工具包自带的网络查看工具,目前所有主流linux发行版都默认预装,相比netstat,ss直接从内核读取信息,在服务器存在大量连接的场景下查询速度快很多,资源占用也更低。查看监听端口的命令和netstat几乎一致:`sudo ss -tulpn`,参数含义也和netstat完全相同,输出结构更简洁,还可以额外输出socket的内存占用等扩展信息,目前已经逐步替代netstat成为运维人员的首选工具。

使用lsof命令:适合精准排查的进阶方案
lsof是一个列出系统打开文件的工具,linux中一切资源皆为文件,网络socket也属于打开文件,因此也可以用来查看监听端口。查看全量监听端口的命令为`sudo lsof -i -p -n | grep listen`,如果需要单独查看某一个端口的占用进程,直接使用`sudo lsof -i:端口号`就能快速定位,比如`lsof -i:80`就能直接查到占用80端口的进程,排查端口冲突时非常便捷。
三种工具各有适用场景,日常查看端口列表优先选择ss,兼容老旧系统用netstat,精准定位端口进程用lsof即可,只要操作时记得获取root权限,就能得到完整准确的监听端口信息,顺利完成排错工作。(全文约732字)






























