← Back
Check port usage
Lists listening ports with their processes; pass a port number to narrow it down. Read-only, no root needed.
Runs as any userRead-only
One-line run
curl -fsSL https://www.moiu.cn/scripts/port-usage.sh | bashSource
#!/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
