Linux系统如何查找某个端口正在运行的服务情况

在 Linux 系统中,可以使用多种方式来查找某个端口正在运行的服务或程序。以下是几种常用的方法:


🔍 1. 使用 lsof 命令(推荐)

sudo lsof -i :端口号

比如想查找8080端口运行的服务 

sudo lsof -i :8080

输出示例如下所示: 

COMMAND PID  USER FD TYPE DEVICE SIZE/OFF NODE NAME

java   12345 user 50u IPv6 123456 0t0 TCP *:http-alt (LISTEN)

🔍 2. 使用 netstat 命令(旧但常见)

sudo netstat -tulnp | grep :端口号

比如想查找8080端口运行的服务 

sudo netstat -tulnp | grep :8080

输出示例如下所示: 

tcp6 0 0 :::8080 :::* LISTEN 12345/java

🔍 3. 使用 ss 命令(现代替代 netstat


sudo ss -tulnp | grep :端口号
示例

sudo ss -tulnp | grep :8080

输出示例:

LISTEN 0 100 :::8080 :::* users:(("java",pid=12345,fd=50))

🔍 4. 使用 fuser 命令

sudo fuser 端口号/tcp

示例:

sudo fuser 8080/tcp

然后再查进程详细信息:

ps -fp 12345


🧠 总结

命令是否推荐说明
lsof✅ 推荐功能强大、输出清晰
ss✅ 推荐现代、高效
netstat⚠️ 旧工具部分系统已不预装
fuser👍 补充简洁快速


封装一个Shell脚本用来查找某个端口号的服务

#!/bin/bash

echo "🔍 请输入要查询的端口号:"
read -p "端口号: " PORT

# 判断输入是否为空
if [ -z "$PORT" ]; then
  echo "❌ 未输入端口号,已退出"
  exit 1
fi

# 判断端口是否为数字
if ! [[ "$PORT" =~ ^[0-9]+$ ]]; then
  echo "❌ 端口号应为纯数字,已退出"
  exit 1
fi

echo ""
echo "🔎 正在查找端口 $PORT 的服务..."

echo ""
echo "📌 使用 lsof 查询:"
sudo lsof -i :$PORT

echo ""
echo "📌 使用 ss 查询:"
sudo ss -tulnp | grep ":$PORT"

echo ""
echo "📌 使用 fuser 查询:"
sudo fuser ${PORT}/tcp 2>/dev/null
if [ $? -eq 0 ]; then
  for pid in $(sudo fuser ${PORT}/tcp 2>/dev/null); do
    echo "进程 PID: $pid"
    ps -fp $pid
  done
else
  echo "没有找到使用该端口的进程"
fi

然后保存成find_port_service.sh,然后赋予执行权限

chmod +x find_port_service.sh

运行下述命令: 

./find_port_service.sh

如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值