← 戻る

ポート使用状況を確認

待ち受けているポートとプロセスを一覧します。ポート番号を渡せばそれだけを表示。読み取り専用で 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

元ファイルをダウンロード