Windows netstat 查看端口、进程占用

目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用.

操作:操作分为两步:(1)查看该端口被那个PID所占用;方法一:有针对性的查看端口,使用命令

Netstat –ano|findstr “<端口号>”,如图,最后一列为PID。图中的端口号为1068,所对应的PID为3840。


方法二:查看所有的,然后找到对应的端口和PID。


第一幅图中的5列就是上面(a)图对应的5列

(2)查看该PID对应的进程名称。

方法一:一直用命令查找,tasklist|findstr “<PID号>”


从 (c)图 可以看出,PID为3840所对应的进程名字为msnmsgr.exe。

方法二:用任务管理器查看。

调出任务管理器,选择列,如d图。


       查看PID对应的进程名称。如(e)图中的msnmsgr.exe


附录:在命令行中输入netstat /? 可以查看netstat的相关信息。

C:\Documents and Settings\Administrator>netstat /?

显示协议统计信息和当前 TCP/IP 网络连接。

NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-t] [-v] [interval]

  -a            显示所有连接和监听端口。

  -b            显示包含于创建每个连接或监听端口的

                可执行组件。在某些情况下已知可执行组件

                拥有多个独立组件,并且在这些情况下

                包含于创建连接或监听端口的组件序列

                被显示。这种情况下,可执行组件名

                在底部的 [] 中,顶部是其调用的组件,

                等等,直到 TCP/IP 部分。注意此选项

                可能需要很长时间,如果没有足够权限

                可能失败。

  -e            显示以太网统计信息。此选项可以与 -s

                选项组合使用。

  -n            以数字形式显示地址和端口号。

  -o            显示与每个连接相关的所属进程 ID。

  -p proto      显示 proto 指定的协议的连接;proto 可以是

                下列协议之一: TCP、UDP、TCPv6 或 UDPv6。

                如果与 -s 选项一起使用以显示按协议统计信息,proto 可以是下列协议之一:

                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。

  -r            显示路由表。

  -s            显示按协议统计信息。默认地,显示 IP、

                IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;

                -p 选项用于指定默认情况的子集。

  -t            显示当前连接卸载状态。

  -v            与 -b 选项一起使用时将显示包含于

                为所有可执行组件创建连接或监听端口的

                组件。

  interval      重新显示选定统计信息,每次显示之间

                暂停时间间隔(以秒计)。按 CTRL+C 停止重新

                显示统计信息。如果省略,netstat 显示当前

                配置信息(只显示一次)

<think>好的,用户之前问过如何查看x11vnc的端口,我给了几种方法,其中一种是使用ss命令。现在用户执行了“sudo ss -tulpn | grep x11vnc”没有输出,不知道该怎么办。首先,我需要分析可能的原因。 首先,用户可能没有安装x11vnc,或者服务没有运行。这时候ss命令自然不会有输出。另外,可能x11vnc没有使用默认端口,或者用户指定了其他端口,导致grep过滤不到。还有可能ss命令的参数是否正确,比如是否有拼写错误。 然后,我应该分步骤给出解决方法。第一步肯定是检查x11vnc是否真的在运行。可以通过systemctl status或者ps命令来确认进程是否存在。如果进程不存在,用户需要启动服务或者检查安装情况。 如果确认x11vnc在运行,但ss没有输出,可能是监听地址的问题。比如x11vnc可能绑定在本地回环地址(127.0.0.1),而ss命令默认显示的是监听所有地址的情况。这时候需要检查是否绑定到了特定IP,导致ss命令没有显示出来。这时候可以去掉grep部分,直接查看所有监听端口,再手动寻找x11vnc相关的条目。 另外,用户可能没有使用sudo权限,但用户已经加了sudo,所以可能不是权限的问题。不过有些情况下,可能需要更高的权限或者检查命令是否正确。 还有可能是防火墙或者SELinux阻止了端口显示,不过这种情况比较少见。或者x11vnc配置为使用Unix socket而不是TCP端口,这时候ss命令无法检测到。 接下来,我应该建议用户检查进程是否运行,检查监听地址,调整grep参数,检查配置文件,或者使用其他方法如netstat或lsof来确认端口情况。最后,如果所有方法都无效,可能需要重新配置或重新安装x11vnc。 需要确保回答清晰,分步骤说明,让用户能够一步步排查问题。同时,提醒常见的可能原因,比如服务未启动、绑定地址问题、端口号不同等。最后给出总结,帮助用户快速定位问题。</think>如果执行 `sudo ss -tulpn | grep x11vnc` 没有输出,可能是以下原因导致的。以下是逐步排查和解决方法: --- ### **1. 确认 `x11vnc` 是否正在运行** - **检查进程状态**: ```bash ps aux | grep x11vnc ``` - 如果无输出,说明 `x11vnc` 未运行,需要手动启动: ```bash x11vnc -forever -shared -rfbport 5900 # 使用默认端口 5900 ``` --- ### **2. 检查 `x11vnc` 是否监听在非默认端口** - **查看启动命令中的 `-rfbport` 参数**: ```bash ps aux | grep x11vnc | grep rfbport ``` - 如果输出类似 `/usr/bin/x11vnc ... -rfbport 5901 ...`,说明端口是 `5901`(非默认的 5900)。 --- ### **3. 检查 `x11vnc` 的监听地址** - **可能绑定到 `127.0.0.1`(仅本地访问)**: ```bash sudo ss -tulpn | grep 5900 # 替换为实际端口 ``` - 如果输出显示 `127.0.0.1:5900`,说明仅监听本地回环地址,需修改为 `0.0.0.0:5900` 以允许外部访问: ```bash x11vnc -forever -shared -rfbport 5900 -listen 0.0.0.0 ``` --- ### **4. 调整 `grep` 的过滤条件** - **可能进程名不匹配**: - 某些系统或自定义安装的 `x11vnc` 进程名可能不同(如路径为 `/usr/local/bin/x11vnc`)。尝试放宽过滤条件: ```bash sudo ss -tulpn | grep -E '5900|vnc' # 搜索端口或关键字 ``` --- ### **5. 检查是否以用户身份运行(非 root)** - **`x11vnc` 可能以普通用户运行**: - 使用 `sudo` 可能无法看到普通用户进程端口(取决于系统配置)。尝试不加 `sudo`: ```bash ss -tulpn | grep x11vnc ``` --- ### **6. 使用替代工具 `netstat` 或 `lsof`** - **使用 `netstat`**(需安装 `net-tools`): ```bash sudo netstat -tulpn | grep x11vnc ``` - **使用 `lsof`**: ```bash sudo lsof -i -P -n | grep x11vnc ``` --- ### **7. 检查防火墙或 SELinux 是否屏蔽端口** - **临时关闭防火墙(仅测试用)**: ```bash sudo ufw disable # 适用于 `ufw` sudo systemctl stop firewalld # 适用于 `firewalld` ``` - **检查 SELinux 状态**: ```bash getenforce # 输出为 Enforcing 则可能拦截 sudo setenforce 0 # 临时关闭 SELinux ``` --- ### **8. 重新启动 `x11vnc` 并指定端口** - **强制绑定到指定端口**: ```bash x11vnc -forever -shared -rfbport 5900 -display :0 ``` - 通过 `-rfbport` 明确指定端口--- ### **9. 检查配置文件或服务定义** - **查看 Systemd 服务配置**: ```bash sudo systemctl cat x11vnc # 检查服务文件中的端口参数 ``` - 修改配置后重启服务: ```bash sudo systemctl restart x11vnc ``` --- ### **总结:无输出的常见原因** 1. `x11vnc` 未运行。 2. 监听地址为 `127.0.0.1`(需改为 `0.0.0.0`)。 3. 使用非默认端口(如 `5901`)。 4. 进程名或路径与 `grep` 过滤条件不匹配。 5. 权限问题(如普通用户运行,`sudo` 无法查看)。 通过逐步排查,可以定位问题并修正配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值