linux如何查看端口是否被占用:多命令对比

linux如何查看端口是否被占用,主流可选命令为ss、netstat、lsof,ss默认预装在新版CentOS、Ubuntu等发行版,查询速度更快,netstat依赖net-tools包需要手动安装,lsof可以直接关联进程名称与文件句柄;ss适合批量扫描端口,lsof适合拿到端口对应的进程PID后直接定位程序,netstat在很多新系统里已经不再自带,你在最小化安装的服务器上优先使用ss命令,不需要额外安装软件包。

linux查看端口是否被占用的命令对比

命令安装要求查询优势典型限制
ss系统默认自带扫描速度快,输出简洁进程名展示需要额外参数
lsof多数系统默认自带直接展示进程名、PID无root权限时信息不全
netstat需要安装net-tools老运维人员熟悉输出格式新版本系统逐步弃用,查询量大时较慢

执行ss命令查询指定端口,你使用格式ss-tulnp|grep端口号,参数-t代表TCP协议,-u代表UDP协议,-l只筛选监听状态端口,-n以数字形式展示端口不解析域名,-p尝试输出占用端口的进程信息,执行之后输出里看到LISTEN状态,就代表该端口已经被程序监听占用,没有匹配结果代表端口当前空闲。

用lsof定位端口占用进程,你输入lsof-i:端口号,这条命令会列出绑定这个端口的进程,COMMAND列是程序名称,PID列是进程编号,拿到PID之后,你可以使用killPID终止对应进程,普通用户运行这条命令,很多守护进程的信息不会展示完整,切换root或者加sudo执行才能获取完整列表。

netstat查询端口指令为netstat-tulnp|grep端口号,输出字段含义和ss大体一致,最小化安装的CentOS8、Ubuntu22.04这类系统直接运行会提示commandnotfound,你需要执行yuminstallnet-tools或者aptinstallnet-tools完成安装之后才能使用。

区分端口占用的两种状态。

监听端口是程序持续绑定端口等待外部连接,也就是日常部署服务时需要检查的占用状态;建立连接状态只是临时通信链路关闭之后就会释放端口,不能判定端口被常驻程序占用,筛选结果时优先看LISTEN标识,不要把ESTABLISHED连接误判为端口常驻占用。

该方法的适用边界是IPv4和IPv6端口都能检测,但无法检测服务器防火墙层面的端口放行规则,端口没有被进程占用,防火墙策略依旧可以拦截外部访问,端口检测只能确认操作系统内部绑定情况,不能替代firewalld或者iptables规则检查。

批量检查一段连续端口时,ss的效率优势会更加明显,比如ss-tuln可以一次性打印本机全部监听端口,适合批量巡检,lsof更适合单点故障排查,定位到占用端口的异常程序,两者搭配使用可以快速完成端口占用问题排查。

如果查询端口没有任何输出,就代表端口空闲,可以直接给新服务绑定使用。

敬慕百科汇集百科知识与游戏文化,带你发现世界的每一个精彩角落。

想要了解更多关于linux如何查看端口是否被占用的文章欢迎访问:百科