在 Linux 系统中,根据端口查看对应进程的常用命令有 ss 、netstat 、lsof 三种,以下是具体操作步骤和示例,优先推荐 ss(性能更优)和 lsof(信息更全)。
一、使用 ss 命令(推荐,替代 netstat)
ss 是 Linux 下查看套接字信息的工具,速度快、占用资源少,默认系统一般自带。
1. 基本语法
bash
ss -tulnp | grep 端口号
2. 参数说明
-t:显示 TCP 协议端口-u:显示 UDP 协议端口-l:仅显示监听状态的端口-n:以数字形式显示端口号(不解析服务名)-p:显示端口对应的进程 PID 和程序名(需要 root 权限,否则不显示进程信息)
3. 示例(查看 8080 端口进程)
bash
# 普通用户执行(可能无进程信息)
ss -tulnp | grep 8080
# root 用户执行(完整信息)
sudo ss -tulnp | grep 8080
4. 输出示例
LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("java",pid=1234,fd=42))
说明:8080 端口由 java 程序占用,进程 PID 为 1234。
二、使用 lsof 命令(信息最全面)
lsof 是 List Open Files 的缩写,可列出系统中打开的文件和端口关联的进程,部分系统需手动安装。
1. 安装 lsof(如未安装)
bash
# CentOS/RHEL
sudo yum install lsof -y
# Ubuntu/Debian
sudo apt install lsof -y
2. 基本语法
bash
lsof -i:端口号
3. 参数说明
-i:显示网络相关的文件 / 端口:端口号:指定要查询的端口
4. 示例(查看 80 端口进程)
bash
sudo lsof -i:80
5. 输出示例
bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 5678 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)
nginx 5679 www 6u IPv4 12345 0t0 TCP *:http (LISTEN)
说明:80 端口由 nginx 程序占用,有两个进程,PID 分别为 5678 和 5679。
三、使用 netstat 命令(传统工具,部分系统已弃用)
netstat 是传统的网络状态查看工具,功能与 ss 类似,但性能稍弱,部分系统需安装 net-tools 包。
1. 安装 netstat(如未安装)
bash
# CentOS/RHEL
sudo yum install net-tools -y
# Ubuntu/Debian
sudo apt install net-tools -y
2. 基本语法
bash
netstat -tulnp | grep 端口号
3. 参数说明
与 ss 命令参数完全一致:
-tTCP 端口-uUDP 端口-l监听状态-n数字端口-p进程信息
4. 示例
bash
sudo netstat -tulnp | grep 3306
四、补充技巧
-
根据 PID 查看进程详情 查到 PID 后,可通过
ps命令查看进程的详细信息:bashps -ef | grep 进程PID示例:
ps -ef | grep 1234 -
查看所有监听端口及进程
bashsudo ss -tulnp # 或 sudo netstat -tulnp
注意事项
- 查看进程信息(
-p参数)需要 root 权限,普通用户执行可能无法显示 PID 和程序名。 - 如果端口未被监听或无进程占用,命令执行后无输出。