← 返回
端口占用速查
列出正在监听的端口与对应进程,给个端口号就只看那一个。只读,不需要 root。
普通用户即可只读
一键执行
curl -fsSL https://www.moiu.cn/scripts/port-usage.sh | bash脚本源码
#!/usr/bin/env bash
# 端口占用速查
#
# 只读脚本,不需要 root。列出正在监听的端口与对应进程;
# 给了端口号就只看那一个。
# 用法:bash port-usage.sh [端口] 例:bash port-usage.sh 443
set -u
PORT="$1"
echo '====== 端口占用 ======'
if ! command -v ss >/dev/null 2>&1 && ! command -v netstat >/dev/null 2>&1; then
echo '[!] 既没有 ss 也没有 netstat,装一个 iproute2 或 net-tools'
exit 1
fi
# 只列 LISTEN 的 TCP/UDP,带进程名(要 root 才看得到别人的进程)
if command -v ss >/dev/null 2>&1; then
LIST=$(ss -tulpn 2>/dev/null || true)
else
LIST=$(netstat -tulpn 2>/dev/null || true)
fi
if [ -z "$PORT" ]; then
printf '%s\n' "$LIST"
exit 0
fi
case "$PORT" in
''|*[!0-9]*) echo "[!] 端口要是数字,收到:$PORT"; exit 1 ;;
esac
HIT=$(printf '%s\n' "$LIST" | grep -E "[:.]$PORT[[:space:]]" || true)
if [ -z "$HIT" ]; then
echo " (没有进程在监听 $PORT)"
else
printf '%s\n' "$HIT"
fi
