2025-10-30 23:12:00

如何查看Linux系统中某个端口是否被占用?

三、极端场景应对:最小化系统中缺失 netstat 的替代方案

在Alpine Linux、CoreOS或定制化镜像等最小化系统中,net-tools 包常被省略,导致 netstat 不可用。此时应依赖更轻量且现代的工具链。

1. 优先使用 ss(来自 iproute2)

绝大多数现代Linux发行版默认集成 iproute2,其中包含 ss。

ss -lpn | grep ':8080'

支持正则匹配端口,且性能优于 netstat。

2. 利用 /proc 文件系统手动排查

Linux内核将网络状态暴露在 /proc/net/ 目录下,可用于底层诊断。

grep ":1F90" /proc/net/tcp

注意:8080的十六进制为 1F90,需转换后在 /proc/net/tcp 中搜索对应行,再通过inode反查进程。

3. 编写脚本自动化检测

#!/bin/bash

PORT=8080

HEX_PORT=$(printf "%04X" $PORT)

for conn in $(cat /proc/net/tcp | grep ":$HEX_PORT"); do

inode=$(echo $conn | awk '{print $10}')

ps aux | grep $(ls -l /proc/*/fd/* 2>/dev/null | grep "socket\[$inode\]" | awk -F '/' '{print $3}' | head -1)

done

此脚本通过解析TCP表和文件描述符链接,实现无外部依赖的端口追踪。