查看端口具体被哪个服务/进程占用

要查看某个端口被哪个服务或进程占用,可以使用以下方法:


1. 使用 ssnetstat 命令

这两个工具可以列出当前系统的端口占用情况。

方法 1:ss(推荐,较新工具)
sudo ss -tulnp | grep <端口号>

示例(查看 80 端口)

sudo ss -tulnp | grep ':80'

输出示例

tcp   LISTEN 0      128     0.0.0.0:80      0.0.0.0:*    users:(("nginx",pid=1234,fd=6))
  • nginx 是服务名称,1234 是进程 PID。
方法 2:netstat(较旧,部分系统已弃用)
sudo netstat -tulnp | grep <端口号>

2. 使用 lsof 命令

lsof 可以查看文件(包括网络套接字)的占用情况。

sudo lsof -i :<端口号>

示例(查看 3306 端口)

sudo lsof -i :3306

输出示例

COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  5678  mysql   12u  IPv6  12345      0t0  TCP *:3306 (LISTEN)
  • mysqld 是服务名称,5678 是进程 PID。

3. 通过进程 PID 查找服务(systemd 管理的服务)

如果占用端口的进程是由 systemd 管理的服务,可以进一步查找服务名:

systemctl status <PID>

或:

ps -p <PID> -o comm=

示例

systemctl status 1234

输出

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: active (running) since ...
  • 这里可以看到 nginx.service 是该端口的服务。

4. 使用 fuser 命令

sudo fuser <端口号>/tcp

示例

sudo fuser 80/tcp

输出

80/tcp: 1234
  • 1234 是占用该端口的进程 PID。

总结

方法命令适用场景
sssudo ss -tulnp \| grep :<端口>推荐,查看监听端口
lsofsudo lsof -i :<端口>查看具体进程
netstatsudo netstat -tulnp \| grep :<端口>旧版系统备用
systemctlsystemctl status <PID>查看 systemd 管理的服务
fusersudo fuser <端口>/tcp快速查找占用端口的 PID

示例流程

问题:谁占用了 3306 端口?

# 方法 1:ss
sudo ss -tulnp | grep ':3306'

# 方法 2:lsof
sudo lsof -i :3306

# 方法 3:通过 PID 查服务
sudo systemctl status 5678  # 假设 PID=5678

如果有具体端口需要排查,可以告诉我,我会提供更详细的指导!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值