查询端口占用小脚本(ubuntu)

脚本代码

bash 复制代码
#!/bin/bash

# 加载bash配置(补充环境变量,避免遗漏)
source ~/.bashrc 2>/dev/null  # 重定向错误输出,避免无配置时的报错

# ======================== 参数基础校验 ========================
# 检查是否至少输入1个端口号
if [ $# -eq 0 ]; then
    echo "❌ 用法错误!请至少输入1个端口号作为参数。"
    echo "✅ 正确用法: $0 <端口号1> [端口号2] [端口号3] ..."
    echo "📌 示例: $0 80 8080 9090 3306"
    exit 1
fi

# ======================== 定义查询函数 ========================
# 封装查询端口的函数,入参:目标端口号
check_port() {
    local target_port=$1
    echo "========================================"
    echo "正在查询端口 $target_port 的占用情况..."
    echo "========================================"
    
    # 1. 先校验端口号是否为有效数字(0-65535是合法端口范围)
    if ! [[ "$target_port" =~ ^[0-9]+$ ]]; then
        echo "❌ 端口号 $target_port 无效:必须是纯数字!"
        echo ""
        return  # 跳过当前端口,继续处理下一个
    fi
    if [ "$target_port" -lt 0 ] || [ "$target_port" -gt 65535 ]; then
        echo "❌ 端口号 $target_port 无效:合法端口范围是 0-65535!"
        echo ""
        return
    fi

    # 2. 执行端口查询(sudo需root权限,查询进程信息必须)
    port_info=$(sudo ss -tulnp | grep ":$target_port" 2>/dev/null)
    
    # 3. 输出查询结果
    if [ -n "$port_info" ]; then
        echo "✅ 端口 $target_port 已被占用,详细信息:"
        echo "$port_info"
    else
        echo "❌ 端口 $target_port 未被占用(或无权限查看进程信息)。"
    fi
    echo ""  # 空行分隔,提升可读性
}

# ======================== 遍历所有输入的端口并查询 ========================
echo "📋 开始查询指定的端口(共 $# 个)..."
echo ""

# 遍历所有命令行传入的端口号($@ 表示所有参数)
for port in "$@"; do
    check_port "$port"
done

echo "✅ 所有端口查询完成!"

脚本使用方法

  1. 保存脚本为 check_ports.sh

  2. 赋予执行权限:

    复制代码
    chmod +x check_ports.sh
  3. 运行脚本(输入任意数量端口号):

    复制代码
    # 示例1:查询1个端口
    ./check_ports.sh 8080
    # 示例2:查询3个端口
    ./check_ports.sh 80 8080 3306
    # 示例3:查询5个端口
    ./check_ports.sh 22 443 9090 6379 8888

示例输出

复制代码
📋 开始查询指定的端口(共 3 个)...

========================================
正在查询端口 80 的占用情况...
========================================
✅ 端口 80 已被占用,详细信息:
tcp    LISTEN  0      100         0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=789,fd=6))

========================================
正在查询端口 8080 的占用情况...
========================================
❌ 端口 8080 未被占用(或无权限查看进程信息)。

========================================
正在查询端口 99999 的占用情况...
========================================
❌ 端口号 99999 无效:合法端口范围是 0-65535!

✅ 所有端口查询完成!

总结

要想更换查询命令命令,可更改下方红色部分

port_info=(**sudo ss -tulnp \| grep** ":target_port" 2>/dev/null)

相关推荐
江湖有缘20 分钟前
基于开发者空间部署Eigenfocus项目管理工具【华为开发者空间】
运维·服务器·华为
丶伯爵式21 分钟前
Docker 国内镜像加速 | 2026年3月26日可用
运维·docker·容器·镜像加速·国内镜像加速
小陈工1 小时前
Python安全编程实践:常见漏洞与防护措施
运维·开发语言·人工智能·python·安全·django·开源
刚入门的大一新生4 小时前
Linux-Linux的基础指令4
linux·运维·服务器
HelloTonyGo7 小时前
个人游戏笔记本免费“养龙虾”(三)OpenClaw的安全配置指南
ubuntu·网络安全·配置·读写权限·openclaw
腾讯蓝鲸智云8 小时前
嘉为蓝鲸可观测系列产品入选Gartner《中国智能IT监控与日志分析工具市场指南》
运维·人工智能·信息可视化·自动化
路溪非溪9 小时前
Linux下蓝牙框架的数据流
linux·arm开发·驱动开发
能不能别报错9 小时前
openclaw-linux部署教程+mimo-v2-pro
linux·运维·服务器
小虎卫远程打卡app10 小时前
光通信与视频编码前沿技术综述:从超大容量传输到实时神经网络编码
运维·网络·信息与通信·视频编解码
ToB营销学堂10 小时前
B2B营销自动化新解法:MarketUP聚焦高转化场景
大数据·运维·自动化