Linux服务器端口号怎么看?端口号查询命令有哪些?

Linux查看服务器端口号,核心就一句话:用ss -tlnp命令,分别是查看TCP监听端口及对应进程,这是当前最准确、最推荐的做法。比起老牌的netstat,ss命令在现代Linux系统上速度更快、信息更全,我会把查看端口的各种场景和命令拆开揉碎讲清楚,保证你看完就能上手。

linux查看端口号命令有哪些:从入门到进阶

很多朋友刚接触Linux时,第一反应是问“端口号在哪看”,Linux没有图形界面让你点鼠标,全靠命令行,这就是linux查看端口号命令的用武之地,我会按使用频率和场景,把命令分为三类,你按需取用。

5分钟学会查看Linux端口占用情况
加载中
5分钟学会查看Linux端口占用情况
卿
卿瑜的技术日记
2.4万--
原视频地址

基础必备:ss命令的详细用法

ss是iproute2包的一部分,几乎所有现代Linux发行版都预装了它,它的语法比netstat更简洁,内核信息读取机制也更高效。

  • 查看所有监听的TCP端口:这是最常用的场景,执行 ss -tln,拆解一下参数:-t表示只显示TCP协议,-l表示只显示监听状态的端口,-n表示以数字形式显示端口号和IP地址,不做域名反向解析,这样速度更快、输出更清晰。
  • 查看所有监听的UDP端口:把-t换成-u,即 ss -uln,UDP端口常用于DNS、NTP、视频流等服务。
  • 查看所有端口(包含已建立的连接):去掉-l,执行 ss -tan,这会把所有TCP连接都列出来,包括ESTAB(已建立)、TIME-WAIT等状态,如果你想看当前服务器有多少活跃连接,用这个。
  • 查看具体进程信息:在基础命令上加上-p参数,即 ss -tlnp,这能显示哪个进程占用了哪个端口,需要root权限才能看到完整信息,如果是普通用户,可能只能看到自己的进程。
    解读:
    State列显示监听状态(LISTEN),Recv-Q和Send-Q是接收和发送队列,一般情况下监听端口这两个值都是0。Local Address:Port是关键,比如0.0.0:22表示所有IPv4地址的22端口都在监听,[::]:80表示所有IPv6地址的80端口在监听。Users:(("sshd",pid=1234,fd=3))这行就是进程信息,sshd是进程名,pid=1234是进程号。

老牌工具:netstat命令及安装方法

虽然在很多新系统中netstat不再是默认安装,但它依然是排查问题的得力助手,如果提示command not found,在CentOS/RHEL系用yum install net-tools,在Ubuntu/Debian系用apt install net-tools。

  • 基本语法:netstat -tlnp,参数含义与ss大同小异,-p同样需要root权限。
  • 与ss命令的差异:netstat还支持-i显示网卡信息,-r显示路由表,虽然在纯端口查看上两者功能重叠,但处理高并发连接时,ss的速度优势非常明显,因为netstat会遍历/proc/net下的文件,而ss直接读取内核内存,行业共识认为,在高流量服务器上,ss是更优选择。

精准定位:lsof命令

lsof是“list open files”的缩写,在Linux世界里“一切皆文件”,网络连接也是文件,所以它能很灵活地按端口或进程查询。

  • 按端口查进程:lsof -i:8080,直接查看8080端口被谁占用,会列出进程名、PID和用户。
  • 按进程查端口:lsof -i -P | grep nginx,先列出所有网络文件,再过滤出nginx相关的,-P参数同样是为了禁止端口名解析。
  • 查看所有监听端口:lsof -iTCP -sTCP:LISTEN -P,这个命令会列出所有TCP监听端口,信息比ss更详细,如果你的服务器上没装lsof,同样可以用包管理器安装,它是排查端口占用问题的常用工具。

服务器端口被占用怎么解决:排查与处理实战

在工作中,你可能会遇到启动服务时提示“端口已被占用”,这通常意味着另一个程序已经捆绑了该端口。服务器端口被占用怎么解决是运维新手最常见的困惑,我们来梳理一套标准的排查思路。

定位占用端口的“元凶”

关键在于找到PID(进程ID),假设遇到8080端口被占用。

  1. 使用lsof快速定位:执行 lsof -i:8080。
  2. 使用ss定位:执行 ss -tlnp | grep 8080,或者 ss -tlnp 'sport = :8080',我们也常在后面看到提示“java”或“nginx”等进程名。
  3. 使用fuser命令:fuser 8080/tcp,这个命令直接输出占用8080端口TCP连接的进程PID,非常直接,加上-v参数可以显示更详细的信息。

得到PID后,执行 ps -ef | grep <PID> 就能看到是哪个程序,执行 ls -l /proc/<PID>/exe 可以看到这个进程的可执行文件路径。

处理端口占用的几种有效方式

确认进程后,根据业务性质决定下一步。

  • 如果是无用的僵尸进程:执行 kill -9 <PID>。
  • 如果是需要升级或重启的服务:执行 systemctl restart <服务名>。
  • 如果是你自己运行在后台的进程:执行 kill <PID>,如果杀不掉再考虑-9。
  • 更优雅的方式:使用pkill按名称杀进程,pkill -f 'java -jar app.jar',注意,pkill会匹配进程名,小心勿杀。

这里有个极易出错的地方:改了配置文件后,服务进程不会自动重载,你需要先查看到旧PID,再确认它是被systemd管理还是直接运行的命令,如果是systemd服务,systemctl restart会正确处理;如果是手动启动的,你需要先手动kill旧进程再启动新进程。

防火墙对端口的影响

你发现服务在服务器内部能访问,但外部访问不了,但端口明明是监听状态,这时多半是防火墙策略问题,Linux的firewalld和iptables是两套常见工具。

  • firewalld(CentOS 7+默认):执行 firewall-cmd --list-ports 查看已放行的端口,如需放行8080端口,执行 firewall-cmd --zone=public --add-port=8080/tcp --permanent,firewall-cmd --reload。
  • iptables:执行 iptables -L -n 查看当前规则,但请注意,iptables规则很复杂,如果没把握,不要随意修改。

还有云服务商的安全组规则,比如简米云、酷番云,也需要在控制台检查对应端口是否在入方向规则中放行。

根据端口号查找对应进程:反向追踪技巧

很多时候我们拿到一个端口号,需要知道背后是什么服务。根据端口号查找对应进程这个需求,在安全管理、应用排错时特别常见。

通过PID查询进程详情

还是以8080为例,先用ss -tlnp | grep 8080拿到PID,假设是5678。

执行 ps -p 5678 -o pid,ppid,user,cmd,结果中cmd列会显示完整的启动命令,比如/usr/local/jdk/bin/java -jar /opt/app/app.jar,这就非常清楚了。

如果你想知道这个进程是从哪个目录启动的,执行 readlink -f /proc/5678/cwd。

端口与进程的关系梳理

端口是网络传输层(TCP/UDP)的标识,进程是操作系统资源管理的单位,内核负责把数据包分发到对应端口的进程,一个端口同时只能被一个进程监听,但一个进程可以监听多个端口,比如Nginx的80和443端口。

查询需求 推荐命令 说明
查所有TCP监听端口 ss -tln 最快,最常用
查具体端口占用的进程 lsof -i:端口号 直观显示PID和进程名
查所有UDP监听端口 ss -uln 适合排查DNS等服务
查进程监听了哪些端口 ss -tlnp \| grep PID 反向查询
查外部连接情况 ss -tan 查看服务器收到的外部连接

实战:排查“地址已被使用”的错误

启动一个Java应用(如Spring Boot),提示BindException: Address already in use,此时不要慌。

  • 用 lsof -i:8080 看看,如果输出一堆,第一行是COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME,关注PID和NAME列,NAME里的:8080 (LISTEN)表示正在监听。
  • 如果找不到,试试netstat -tlnp | grep 8080,有时候是权限不够导致lsof没显示末尾的PID信息,加sudo再试。
  • 另一种情况是端口处于TIME_WAIT状态,这不是进程占用,而是连接关闭后的残留状态,默认TIME_WAIT持续60秒,属于正常现象,如果服务老是报地址被占用,需要调整内核参数或应用配置,比如设置SO_REUSEADDR。

linux查询服务端口号:围绕服务的端口操作

日常运维中,你更多是围绕某个服务来查端口,我的Nginx跑在哪个端口?”这不同于单纯根据端口找进程。

  • 根据服务名查:如果你知道服务名,用systemctl status nginx查看服务状态和主PID,然后用ss -tlnp | grep <PID>查询该PID监听的所有端口,或者更直接,ss -tlnp | grep nginx。
  • 根据配置文件查:服务的端口一般在配置文件中定义,Nginx的/etc/nginx/nginx.conf中的listen指令;MySQL的/etc/my.cnf中的port参数;Redis的/etc/redis.conf中的port,直接cat或grep对应配置文件即可。
  • 查看本机所有服务的监听端口清单:一条ss -tlnp命令,配合grep,就能快速梳理出当前机器上所有服务的端口映射,对于多服务部署的服务器,这个技巧能帮你快速建立一份“端口-服务”对照表。

Q&A:linux查看端口号的常见疑问

Q1:ss命令和netstat命令哪个更可靠?

A1:ss更可靠且更高效,它直接读取内核的socket统计信息,而netstat需要解析/proc/net文件系统,在高并发、大量连接的场景下,ss不会消耗太多CPU资源,输出也很稳定,除非你在排查非常老旧的系统或需要netstat -i这类网卡统计信息,否则优先推荐使用ss,在绝大多数现代Linux发行版中,ss已是标配。

Q2:为什么用普通用户执行ss -tlnp只能看到端口,看不到进程PID?

A2:这是权限限制,进程信息属于敏感数据,只有root用户才能查看所有进程的PID和名称,普通用户只能看到自己拥有的进程,在排查系统级问题时,你需要切换到root用户或在命令前加sudo,例如执行sudo ss -tlnp,才能获得完整的“端口-进程”对应关系。

Q3:使用lsof -i:8080找不到任何信息,但服务确实无法启动,提示端口被占用,可能是什么原因?

A3:可能原因有三,第一,你查询的进程属于其他用户,且你没有权限查看,需要加上sudo重试,第二,该端口可能处于TIME_WAIT状态,它不归属于任何正在运行的进程,但依然会阻止一些严格的程序重新绑定,可以用ss -tan state time-wait 'sport = :8080'确认,第三,IPv6和IPv4的差异,某些服务监听在(IPv6)地址上,而lsof默认输出可能让你忽略它,尝试lsof -iTCP:8080 -sTCP:LISTEN -P -n,这个命令能更完整地显示所有IP协议下的监听状态。


掌握Linux端口查看命令,是服务器管理和故障排查的基本功。记住ss -tlnp和lsof -i:端口号这两个核心命令,就能解决绝大部分问题,前者给你全貌,后者帮你精准定位,遇到陌生端口,先查监听状态,再确认进程归属,最后检查防火墙和云安全组策略,这套流程走下来,端口相关的疑难杂症基本都能迎刃而解。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/783451.html

赞 (0)
上一篇 2026年11月5日 09:40
下一篇 2026年11月5日 09:41

相关推荐

  • 服务器cpu天梯图怎么看?2026最新服务器CPU性能排名榜单

    服务器CPU的性能排序并非单纯取决于核心数量,而是由制程工艺、架构代际、缓存设计与指令集优化共同决定的综合结果,企业级用户在选型时,应优先关注“单核性能”与“多核并发效率”的平衡,而非盲目追求核心堆砌, 当前市场格局中,AMD EPYC(霄龙)系列在多核性能与能效比上占据优势,而Intel Xeon(至强)系列……

    2026年3月30日
    17000
  • 我的世界怎么附魔32k在服务器

    在服务器中,我的世界附魔32k的核心方法是使用管理员给予的/give指令直接获取带超高等级附魔的装备,或是通过特定附魔插件修改附魔上限,原版生存模式无法正常附出32k,我的世界服务器附魔32k的具体指令和操作很多玩家在进入服务器后,看到有人拿着附魔等级高达32k的剑,自己却不知道怎么弄,其实32k并不是一个官方……

    2026年8月29日
    3900
  • 我的世界网易租服务器怎么添加mod,附详细教程和常见问题

    网易我的世界租服务器加mod的核心路径是:在租赁服管理后台的“组件管理”里安装已审核组件,或通过开发者平台上传行为包/资源包并让客户端版本与服务器版本对齐;你无法直接修改租赁服的核心文件, 下面按版本、权限、实操、收费和常见问题拆开讲,照着做能少走弯路,先搞懂网易版加mod的底层逻辑网易版“模组”叫组件,来源只……

    程序编程 2026年11月4日
    000
  • ajax一直加载数据库怎么回事?ajax请求卡住怎么解决

    AJAX请求一直加载数据库通常是因为后端代码陷入死循环、数据库连接未正确关闭或前端轮询间隔过短导致服务器资源耗尽,解决核心在于优化查询逻辑并引入缓存机制,当你在开发Web应用时,最让人头疼的场景莫过于前端页面显示一个永不停止的加载动画,而后台数据库却像被冻结了一样毫无响应,这不仅仅是代码Bug,更是系统架构与数……

    2026年6月4日
    5000
  • mycat分库分表增加服务器怎么做,扩容步骤有哪些?

    加服务器扩Mycat分库分表,核心思路就一句话:先搞清楚瓶颈在连接数还是数据量,再决定是纵向加配置还是横向加节点,最后改配置文件并平滑迁移数据,很多团队一上来就想着加机器,结果改了分片规则后发现数据对不上,路由全乱了,业务直接断,本文按实际操作路径拆解,覆盖方案选型、配置修改、数据迁移和验证回滚,mycat分库……

    程序编程 2026年10月21日
    000
  • ASP.NET网络编程入门难吗?系统教程带你轻松掌握

    ASP.NET网络编程ASP.NET是微软构建现代Web应用和服务的核心框架,它结合了高性能、开发效率和强大的企业级功能,使开发者能够创建从小型网站到大规模分布式系统的各类网络应用,深入理解其架构与关键组件,是构建稳健、安全、可扩展网络服务的基础,核心基石:请求处理管道ASP.NET的核心是一个高度可扩展的HT……

    2026年2月8日
    14460
  • 如何用VB查询Excel数据?vb读取excel数据方法

    使用VB查询Excel的核心在于通过ADO或Excel对象模型建立连接,其中ADO适合批量数据读取与SQL风格查询,而Excel对象模型更适合需要保留格式与复杂交互的场景,在2026年的企业办公环境中,数据孤岛问题依然普遍存在,许多开发人员面临的一个具体痛点是:如何在Visual Basic(VB)环境中高效……

    2026年7月10日
    17900
  • 服务器端数据库怎么登录sys账号,sys账号默认密码是多少

    数据库sys账号怎么登录?答案是:本地登录用sqlplus / as sysdba走操作系统认证,远程登录用sqlplus sys@IP:端口/服务名 as sysdba配合密码文件认证,别急着复制命令,不同场景下的坑差很多,下文拆开讲清楚,数据库sys账号怎么登录:先分清两种认证机制很多人上来就敲命令,报错O……

    2026年9月17日
    300
  • 服务器4核8g怎么看配置,性能够用吗?

    4核8G不是“万能配置”,它更像一台中等负载单机业务的起步线——跑中小型网站、API服务、轻量数据库够用,但带宽、磁盘IO和实例类型选错,核数再够也白搭,4核8G到底是一台什么水平的机器很多人看到“4核8G”第一反应是对标自己的笔记本,这个类比方向对,但结论会偏,云服务器是共享物理机的虚拟切片,参数相同,实际体……

    程序编程 2026年10月24日
    100
  • 架设服务器cis连不上怎么办,连接失败原因排查方法有哪些?

    架设服务器cis链接不上时,先别急着重装系统, 排查路径的优先级非常明确:先确认本机能通到服务器,再看服务进程是否活着,最后检查防火墙、安全组和加密隧道,按这个顺序走,九成问题在半小时内就能定位,架设服务器cis链接不上的常见诱因:别把网络问题误判为软件故障大多数人第一次遇到cis链接不上,第一反应是配置文件写……

    程序编程 2026年10月24日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注