如何查看某个端口被哪个进程占用?
美国、香港服务器
如何查看某个端口被哪个进程占用?
08-18 来源:
在 Linux 系统中,查看某个端口被哪个进程占用,常用的命令有 lsof、ss 和 netstat(部分系统默认不安装)。以下是具体方法:
方法 1:使用 lsof 命令(推荐,信息全面)
lsof(List Open Files)可直接通过端口号查询对应的进程信息,包括 PID 和进程名。
语法:
bash
sudo lsof -i :端口号
示例:
查看 8080 端口的占用情况:
bash
sudo lsof -i :8080
输出说明:
plaintext
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1234 user 42u IPv6 12345 0t0 TCP *:8080 (LISTEN)
COMMAND:进程名称(如 java)
PID:进程 ID(如 1234)
USER:进程所属用户
NAME:显示端口监听状态(LISTEN 表示正在监听)
方法 2:使用 ss 命令(轻量,系统自带)
ss 是 Linux 系统自带的网络统计工具,替代了传统的 netstat,可快速查询端口与进程的关联。
语法:
bash
sudo ss -ntpl | grep 端口号
参数说明:
-n:不解析服务名称(直接显示端口号)
-t:只显示 TCP 连接
-p:显示占用端口的进程信息(需 root 权限)
-l:只显示监听状态的端口
示例:
查看 8080 端口的占用情况:
bash
sudo ss -ntpl | grep 8080
输出说明:
plaintext
LISTEN 0 100 *:8080 *:* users:(("java",pid=1234,fd=42))
pid=1234:进程 ID
("java"):进程名称
方法 3:使用 netstat 命令(传统工具,部分系统需安装)
netstat 是传统的网络工具,功能与 ss 类似,但部分新系统(如 CentOS 7+、Ubuntu 20.04+)默认不安装,需手动安装(如 sudo apt install net-tools 或 sudo yum install net-tools)。
语法:
bash
sudo netstat -ntpl | grep 端口号
参数说明:
-n:不解析服务名称
-t:显示 TCP 连接
-p:显示进程信息(需 root 权限)
-l:显示监听状态的端口
示例:
查看 8080 端口的占用情况:
bash
sudo netstat -ntpl | grep 8080
输出说明:
plaintext
tcp6 0 0 :::8080 :::* LISTEN 1234/java
最后一列的 1234/java 表示进程 ID 为 1234,进程名为 java
总结
优先使用 lsof -i :端口号 或 ss -ntpl | grep 端口号,前者信息更全,后者是系统自带工具。
所有命令需 sudo 权限才能显示完整的进程信息(尤其是非当前用户的进程)。
若端口被 UDP 协议占用,可将 -t 参数改为 -u(如 ss -nupl | grep 端口号)。
通过以上方法,可快速定位占用特定端口的进程,便于解决端口冲突等问题。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快