凌峰创科服务平台

Linux如何查看服务器端口占用情况?

在Linux系统中查看服务器端口状态是系统管理和网络故障排查中的常见操作,端口作为应用程序与外部通信的入口,其状态(如开放、监听、关闭)直接关系到服务的可用性,本文将详细介绍多种查看端口的方法,涵盖基础命令到高级工具,并辅以实际场景说明。

Linux如何查看服务器端口占用情况?-图1
(图片来源网络,侵删)

使用netstat命令查看端口

netstat是传统的网络状态查看工具,尽管部分新系统已默认不安装,但其功能全面,仍被广泛使用,基本语法为netstat [选项],常用选项包括:

  • -t:显示TCP端口
  • -u:显示UDP端口
  • -l:仅显示监听端口
  • -n:以数字形式显示地址和端口(避免DNS解析)
  • -p:显示进程ID和名称(需root权限)

查看所有监听的TCP端口并显示进程信息:

sudo netstat -tulnp

输出结果中,Local Address列显示IP和端口,State列显示端口状态(如LISTEN表示监听),PID/Program name列关联到具体进程。

使用ss命令查看端口

ssnetstat的替代工具,默认安装在大多数现代Linux发行版中,其速度更快且功能更强大,基本语法为ss [选项],常用选项与netstat类似,如-t-u-l-n-p

Linux如何查看服务器端口占用情况?-图2
(图片来源网络,侵删)

查看所有TCP监听端口:

ss -tlnp

ss的输出更简洁,且支持更多过滤条件,如ss -t state listening仅显示监听状态的TCP端口。

使用lsof命令查看端口

lsof(List Open Files)可用于查看打开的文件、目录和网络连接,通过指定i选项可筛选端口信息:

sudo lsof -i :80  # 查看80端口占用情况

输出中PID列显示进程ID,NAME列显示进程名,TYPE列为IPv4IPv6

使用/proc文件系统查看端口

Linux内核通过/proc文件系统暴露系统信息,可直接查看网络连接状态,查看TCP监听端口:

cat /proc/net/tcp | grep "0A"  # 0A表示LISTEN状态

输出为十六进制格式,需结合端口转换工具(如/etc/services)解析端口号。

使用nmap端口扫描工具

nmap是强大的网络探测工具,可扫描远程或本地端口状态,扫描本机开放端口:

nmap -sT -O localhost

-sT为TCP连接扫描,-O系统检测,对于本地管理,nmap可提供更详细的端口服务信息。

端口状态说明

端口常见状态包括:

  • LISTEN:端口处于监听状态,等待连接
  • ESTABLISHED:端口已建立连接
  • TIME_WAIT:连接关闭后等待状态
  • CLOSED:端口未开放

实际应用场景

  1. 服务故障排查:若网站无法访问,可通过ss -tlnp | grep :80检查80端口是否被占用或未监听。
  2. 安全审计:使用nmap扫描服务器,确认只开放必要端口(如SSH 22、HTTP 80)。
  3. 进程管理:发现异常端口后,通过kill -9 PID终止可疑进程。

端口与进程管理表格

命令 功能 示例 适用场景
netstat -tulnp 显示TCP/UDP监听端口及进程 sudo netstat -tulnp 传统系统,需详细状态
ss -tlnp 快速查看监听端口及进程 ss -tlnp 现代系统,高效查询
lsof -i :端口号 查看指定端口占用进程 sudo lsof -i :22 精准定位单个端口
cat /proc/net/tcp 查看内核TCP连接表 grep "0A" /proc/net/tcp 深度调试,底层分析
nmap -sT localhost 扫描本地开放端口 nmap -sT -p 1-1024 localhost 安全审计,端口发现

相关问答FAQs

Q1: 如何查看某个端口是否被占用?
A: 使用ssnetstat命令结合端口号过滤,例如ss -tlnp | grep :8080sudo netstat -tulnp | grep :8080,若输出为空,说明端口未被占用;若有显示,则查看对应的进程信息。

Q2: 如何关闭被占用的端口?
A: 首先通过ss -tlnp | grep :端口号找到占用端口的进程PID,然后使用kill -9 PID强制终止进程,若为系统关键服务,建议先停止对应服务(如systemctl stop nginx)而非直接杀进程,避免系统异常。

分享:
扫描分享到社交APP
上一篇
下一篇