Netstat Commands Reference
完整的netstat和ss命令参考(Linux、macOS和Windows),包含可搜索的示例。
List all connections
netstat -ass -aList listening ports (TCP+UDP)
netstat -tulnss -tulnShow TCP connections
netstat -tnss -tnShow UDP connections
netstat -unss -unShow process PIDs
netstat -tulnpss -tulnp⚠ Linux/macOS may require root for PID visibility
Show routing table
netstat -rip routeShow network statistics
netstat -sss -sCount connections by state
netstat -an | awk '{print $6}' | sort | uniq -c | sort -rnss -tan | awk 'NR>1 {print $1}' | sort | uniq -cFind process using a port
netstat -tulnp | grep :8080ss -tulnp | grep :8080⚠ Replace 8080 with your port number
Show socket summary
netstat -iss -i关于此工具
Netstat和ss是命令行实用程序,可以显示Linux、macOS和Windows系统上的活动网络连接、路由表、接口统计和套接字信息。Netstat是传统的选择,已有数十年历史,但ss(套接字统计)是Linux系统上的现代替代品—它更快、更易读,并显示详细的套接字状态信息。理解这些工具对于诊断连接问题、确定哪些应用程序正在使用网络资源、监控端口活动或追踪意外连接和侦听服务的网络管理员至关重要。
此参考指南按任务组织最有用的netstat和ss命令:检查哪些端口在侦听、查看活动连接、查找与网络活动关联的进程ID、按协议分析流量、列出各种状态的所有套接字以及监控网络接口统计。每个命令都附带其目的和典型输出格式的说明,使您可以轻松找到所需的确切语法,而无需记住数十个标志。可搜索的格式使您可以按命令名称、协议类型或用例快速过滤—无论您是在排查挂起的服务故障、审计开放端口以确保安全,还是调查带宽消耗。
系统管理员、DevOps工程师和安全专业人员每天都依赖这些命令来理解系统网络行为、检测端口冲突、验证服务是否正确侦听以及识别未授权的网络访问。无论您是第一次使用这些工具还是需要快速提醒正确的语法,此参考通过提供真实、实用的示例来节省时间,您可以立即复制并适应您的特定网络诊断或监控任务。
常见问题
代码实现
import subprocess
import platform
def run_netstat(args: list[str]) -> str:
"""Run netstat command and return output."""
try:
result = subprocess.run(["netstat"] + args, capture_output=True, text=True, timeout=10)
return result.stdout
except FileNotFoundError:
# Try ss on Linux if netstat not found
if platform.system() == "Linux":
result = subprocess.run(["ss"] + args, capture_output=True, text=True, timeout=10)
return result.stdout
return "netstat not found"
# Show all listening TCP ports
print("=== Listening TCP ports ===")
system = platform.system()
if system == "Linux":
print(run_netstat(["-tlnp"])) # or ss -tlnp
elif system == "Darwin": # macOS
print(run_netstat(["-an", "-p", "tcp"]))
elif system == "Windows":
print(run_netstat(["-ano", "-p", "TCP"]))
# Parse listening ports
def get_listening_ports() -> list[dict]:
"""Parse ss output on Linux to get listening ports."""
result = subprocess.run(["ss", "-tlnp"], capture_output=True, text=True)
ports = []
for line in result.stdout.splitlines()[1:]:
parts = line.split()
if len(parts) >= 4 and parts[0] == "LISTEN":
ports.append({"state": parts[0], "local": parts[3], "process": parts[6] if len(parts) > 6 else ""})
return ports
if system == "Linux":
for p in get_listening_ports():
print(p)Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.