自学内容网 自学内容网

不同系统查看软件占用端口的方式

Windows

使用命令提示符(CMD)

  1. 打开命令提示符:

    • 按 Win + R 键打开“运行”对话框,输入 cmd 并按回车。为了执行某些命令,您可能需要以管理员身份运行命令提示符。可以通过右键点击“开始”按钮并选择“命令提示符(管理员)”或“Windows PowerShell(管理员)”。
  2. 执行 netstat 命令:

    • 输入以下命令并按回车键:
      netstat -ano
    • 解释输出:
      • Proto: 协议类型(TCP 或 UDP)
      • Local Address: 本地地址和端口(格式为 IP:端口号)。如果显示为 0.0.0.0:端口号 或 *:端口号,则表示该端口在所有可用的IP地址上监听。
      • Foreign Address: 远程地址和端口(对于监听状态,这通常显示为 0.0.0.0:0 或 *:端口号
      • State: 连接状态(例如 LISTENING, ESTABLISHED 等)
      • PID: 进程ID
  3. 查找特定端口:

    • 如果你知道要查找的端口号,可以在命令后添加 | findstr :<端口号> 来过滤输出。例如,查找端口8080的使用情况:
      netstat -ano | findstr :8080
  4. 确定进程名称:

    • 一旦你有了PID,你可以通过任务管理器来查找对应的进程名称。或者直接在命令行中使用 tasklist 命令加上 /FI "PID eq <PID>" 参数,如:
      tasklist /FI "PID eq 1234"
  5. 使用资源监视器:

    • 打开资源监视器(可以通过任务管理器的性能标签下的链接打开),在网络选项卡下查看网络活动。资源监视器不仅显示了当前的网络连接,还提供了与这些连接相关的进程和服务的信息。
  6. 使用PowerShell:

    • PowerShell提供了更强大的命令,比如 Get-NetTCPConnection 和 Get-Process。可以组合使用这两个命令来获取更详细的输出。例如:
      Get-NetTCPConnection | Where-Object State -eq Listen | Select-Object LocalPort, OwningProcess | ForEach-Object { $_; Get-Process -Id $_.OwningProcess }

高级技巧

  • 使用防火墙规则:

    • 您可以利用Windows Defender Firewall创建入站和出站规则来限制特定端口的访问。通过控制面板或Windows设置中的防火墙和网络保护选项配置规则。
  • 日志文件分析:

    • 某些应用程序会在日志文件中记录它们使用的端口信息。您可以检查应用程序的日志文件以了解其行为。
  • 服务管理:

    • 使用 sc query 命令查询服务状态,结合 sc config 修改服务启动参数。例如,更改服务启动类型或路径。

macOS

使用终端

  1. 打开终端:

    • 打开Finder,前往“应用程序 > 实用工具”,然后双击打开“终端”。
  2. 使用 lsof:

    • 可以使用以下命令来查看监听的端口及相应的程序:
      sudo lsof -i -P | grep LISTEN
    • 若要查找特定端口,可以将上述命令与 grep 结合使用,如:
      sudo lsof -i :8080
  3. 解释输出

    • 输出包含多个字段,其中重要的是:
      • COMMAND: 启动服务的命令名
      • PID: 进程ID
      • USER: 运行该进程的用户
      • FD: 文件描述符(通常是 IPv4 或 IPv6
      • TYPE: 文件类型(SOCK代表套接字)
      • DEVICE: 设备号
      • SIZE/OFF: 文件大小或偏移量
      • NODE: 节点号
      • NAME: 网络地址(格式为 IP:端口号

高级技巧

  • 使用 pfctl 配置防火墙:

    • macOS自带了一个名为 pf 的包过滤防火墙,可以通过 pfctl 命令进行配置。例如,加载自定义规则集:
      sudo pfctl -f /etc/pf.conf
  • 系统偏好设置中的安全性与隐私:

    • 在“系统偏好设置 > 安全性与隐私 > 防火墙”中,您可以开启或关闭防火墙,并配置允许的应用程序和服务。
  • 日志文件分析:

    • macOS的日志系统已经迁移到统一的日志系统(Unified Logging System),可以通过 log 命令查看日志。例如,查看特定应用程序的日志:
      log show --predicate 'process == "YourApp"' --info

Linux

使用终端

  1. 打开终端:

    • 根据您的桌面环境,可以通过快捷键或菜单打开终端。
  2. 使用 ss, netstatlsof:

    • 对于 ss,可以使用以下命令来查看监听的端口及相应的程序:
      sudo ss -tulnpe
    • 对于 netstat,可以使用类似下面的命令:
      sudo netstat -tulnpe
    • 对于 lsof,可以使用以下命令:
      sudo lsof -i -P -n | grep LISTEN
  3. 查找特定端口:

    • 可以结合 grep 使用这些命令来查找特定端口的信息,例如:
      sudo ss -tnlp | grep ':8080'
  4. 使用 systemctl 查看服务状态:

    • 如果你知道占用端口的服务名称,可以使用 systemctl 查看服务状态,并且启用/禁用它。例如:
      sudo systemctl status <service-name>

高级技巧

  • 防火墙配置:

    • Linux有不同的防火墙解决方案,如 iptables 或 firewalld。例如,使用 iptables 添加一条规则来阻止对特定端口的访问:
      sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
    • 使用 firewalld 添加永久规则:
      sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      sudo firewall-cmd --reload
  • 日志文件分析:

    • 许多Linux发行版使用 rsyslog 或 journalctl 来收集系统日志。例如,使用 journalctl 查看特定服务的日志:
      sudo journalctl -u <service-name>
  • cgroup 和 namespace:

    • 对于容器化环境(如 Docker),可以使用 cgroups 和 namespaces 来隔离资源和网络。您可以使用 docker ps 和 docker stats 命令来监控正在运行的容器及其资源使用情况。

注意事项

  • 权限问题:

    • 大多数涉及网络接口和进程信息的命令都需要root权限。因此,在执行上述命令时,您可能需要在命令前加上 sudo(对于Linux和macOS),或者以管理员身份运行命令提示符/PowerShell(对于Windows)。
  • 安全考虑:

    • 在停止关键系统服务或修改防火墙规则之前,请确保了解所做的更改可能带来的影响,并备份现有配置。
  • 解析非标准端口:

    • 有些应用程序可能会使用非标准端口。在这种情况下,除了常见的 netstat 和 lsof 命令外,还可以尝试使用 tcpdump 或 Wireshark 这样的网络抓包工具来捕获流量,从而帮助识别未知端口上的通信。

 


原文地址:https://blog.csdn.net/m0_50742275/article/details/144313144

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!