在Linux服务器上排查网络问题时,最基础的操作就是确认哪些程序正在运行并监听了哪些端口。系统自带了多个命令行工具,可以让我们清楚地看到TCP、UDP的监听状态和进程对应关系。

使用netstat检查监听端口
netstat是比较传统的网络统计工具,大多数Linux发行版都默认安装。通过以下命令可以列出所有正在监听的端口以及对应程序:
# 查看所有监听中的端口及进程名 netstat -tulnp # 参数说明 # -t 显示TCP # -u 显示UDP # -l 仅显示监听状态 # -n 以数字形式显示地址和端口 # -p 显示进程ID和程序名称
如果输出较多,可以配合grep过滤特定端口,例如查看80端口:
netstat -tulnp | grep ':80'
使用ss命令替代netstat
在新版Linux中,ss命令更高效,它是iproute2包的一部分,语法和netstat类似:
# 显示监听端口和进程 ss -tulnp # 查看特定端口占用 ss -tulnp | grep ':3306'
用lsof查找端口对应程序
lsof用于列出打开的文件,在Linux中一切皆文件,网络套接字也包括在内。可以用它反查某个端口被哪个程序占用:
# 查看8080端口由哪个进程使用 lsof -i :8080 # 查看某程序打开的所有端口 lsof -i -P -n | grep nginx
根据PID定位程序路径
当从上述命令拿到进程ID(如1234)后,可进一步查看程序位置:
# 通过proc文件系统查看程序绝对路径 ls -l /proc/1234/exe # 或使用ps命令 ps -fp 1234
常见问题和处理
- 命令提示无权限:查看进程信息通常需要root或sudo权限,否则只显示当前用户进程。
- netstat未安装:可改用ss,或执行sudo apt install net-tools进行安装。
- 端口被占用导致程序启动失败:用lsof或ss找到占用者,停止对应服务或更换程序端口配置。
简单对照表
| 工具 | 主要用途 | 是否默认安装 |
|---|---|---|
| netstat | 传统端口与连接查看 | 部分新系统需手动装 |
| ss | 高效替代netstat | 多数新发行版自带 |
| lsof | 按端口或文件查进程 | 通常需安装 |
掌握以上命令之后,日常检查Linux程序和监听端口就会非常轻松。遇到服务异常时,先确认端口是否处于监听状态,再顺着PID找到具体程序,基本能定位大部分网络类故障。