本文目录导读:

Linux系统
使用 ss 命令
#!/bin/bash
# 获取所有监听端口及其对应进程
ss -tlnp | awk 'NR>1 {
split($4, addr, ":")
port = addr[length(addr)]
split($7, proc, ",")
gsub(/users:\(\(/, "", proc[1])
print port, proc[1]
}' | sort -u
使用 netstat 命令
#!/bin/bash
# 获取TCP/UDP端口与进程PID的关联
netstat -tulpn 2>/dev/null | grep -E "tcp|udp" | awk '{
split($4, addr, ":")
port = addr[length(addr)]
split($7, proc, "/")
if (proc[2] != "") {
print "端口:", port, "进程:", proc[2], "PID:", proc[1]
}
}'
使用 lsof 命令
#!/bin/bash
# 列出所有监听端口及其进程信息
lsof -i -P -n | grep LISTEN | awk '{
split($9, addr, ":")
port = addr[length(addr)]
print "进程:", $1, "PID:", $2, "端口:", port
}'
Windows系统
PowerShell脚本
# 获取进程端口关联
Get-NetTCPConnection | ForEach-Object {
$process = Get-Process -Id $_.OwningProcess
[PSCustomObject]@{
ProcessName = $process.ProcessName
PID = $_.OwningProcess
LocalPort = $_.LocalPort
RemotePort = $_.RemotePort
State = $_.State
}
} | Format-Table -AutoSize
# 简化为只显示监听端口
Get-NetTCPConnection | Where-Object {$_.State -eq "Listen"} |
Select-Object LocalPort, @{N="Process";E={(Get-Process -Id $_.OwningProcess).ProcessName}}
batch脚本
@echo off netstat -ano | findstr "LISTENING" echo 需要配合tasklist获取进程名
跨平台Python脚本
#!/usr/bin/env python3
import platform
import subprocess
import re
def get_linux_process_ports():
"""Linux系统获取进程端口关联"""
try:
result = subprocess.run(['ss', '-tlnp'], capture_output=True, text=True)
lines = result.stdout.strip().split('\n')[1:]
for line in lines:
parts = line.split()
if len(parts) >= 7:
addr = parts[3]
port = addr.split(':')[-1]
proc_info = parts[6]
proc_name = re.search(r'"(.+?)"', proc_info)
if proc_name:
print(f"端口: {port}, 进程: {proc_name.group(1)}")
except Exception as e:
print(f"错误: {e}")
def get_windows_process_ports():
"""Windows系统获取进程端口关联"""
try:
# 使用PowerShell命令
cmd = '''
Get-NetTCPConnection | Where-Object {$_.State -eq "Listen"} |
Select-Object LocalPort, @{N="Process";E={(Get-Process -Id $_.OwningProcess).ProcessName}}
'''
result = subprocess.run(['powershell', '-Command', cmd], capture_output=True, text=True)
print(result.stdout)
except Exception as e:
print(f"错误: {e}")
# 自动检测操作系统
if platform.system() == "Linux":
get_linux_process_ports()
elif platform.system() == "Windows":
get_windows_process_ports()
else:
print("不支持的操作系统")
实时监控脚本
#!/bin/bash
# 持续监控端口变化
while true; do
clear
echo "=== 进程端口关联 (刷新间隔: 2秒) ==="
echo ""
ss -tlnp 2>/dev/null | awk 'NR>1 {
split($4, addr, ":")
port = addr[length(addr)]
split($7, proc, ",")
gsub(/users:\(\(/, "", proc[1])
gsub(/\)\)/, "", proc[1])
printf "端口: %-8s 进程: %s\n", port, proc[1]
}'
sleep 2
done
高级功能:查找特定端口
#!/bin/bash
# 查找特定端口对应的进程
find_port_process() {
local port=$1
echo "查找端口 $port 的进程..."
# 在Linux上
info=$(ss -tlnp 2>/dev/null | grep ":$port ")
if [ -z "$info" ]; then
echo "端口 $port 未被使用"
return 1
fi
pid=$(echo $info | grep -oP 'pid=\K\d+')
proc_name=$(ps -p $pid -o comm= 2>/dev/null)
echo "端口: $port"
echo "PID: $pid"
echo "进程名: $proc_name"
echo "完整信息: $info"
}
# 使用示例
find_port_process 80
使用建议
- 权限要求:查看其他进程的端口信息通常需要root/administrator权限
- 命令选择:
- Linux推荐使用
ss(更快更现代) - Windows推荐使用PowerShell
- Linux推荐使用
- 安全考虑:生产环境使用前应在测试环境验证
选择最适合你操作系统和使用场景的方法即可。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播