你喜欢用哪种语言? English 简体中文 繁体中文
...
Netstat 命令

Netstat 命令即将被淘汰,它的直接继任者是 ss 命令(Ss 命令),一些功能如查看路由表,则可以用 ip 或者 route 等命令替代。

Netstat 命令用于查看网络连接,路由表和其他网络信息。

不带任何参数执行 netstat 会打印当前所有网络连接,输出类似于:


Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 fca00214fd19:http-alt   ::ffff:10.10.21.142:65243 ESTABLISHED
tcp        0      0 fca00214fd19:http-alt   ::ffff:10.10.21.142:65244 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path

默认打印内容中 IP 和端口会被尝试转换为主机名和端口名(如 http, ssh, ftp...),要打印数字 IP 和端口,使用 -n 标记。

指定协议

使用 -t, -u, -x 标记指定只打印 TCP 连接,UDP 连接或 UNIX socket。

打印监听端口

Netstat 默认打印建立的连接,使用 -l 查看当前监听的端口:


netstat -nl

结合 -p 标记,可以打印进程 PID,进而确认是哪个进程占用了该端口。

如果 PID 是一个横杠 "-",尝试使用 sudo 执行 netstat。

MacOS 中的 Netstat

MacOS,或者说 Darwin 中的 netstat 相比于 GNU/Linux 中的 netstat 功能缩水很多,且参数有很大差异,可以参考这篇文章:How to Use the Netstat Command on Mac

相同

不解析主机名,端口名,用户名:-n

不同

-p 标记用于筛选协议,如 -p tcp, -p udp,而显示 PID 要使用 -v 标记。

不支持筛选监听端口,要查看端口占用情况,要使用其他命令,如 lsof (Lsof Command)。

淘汰

Netstat 命令即将被淘汰,它的直接继任者是 ss 命令(Ss 命令),一些功能如查看路由表,则可以用 ip 或者 route 等命令替代。

参考资料

networking - How to identify a process which has no pid? - Unix & Linux Stack Exchange

How to Use the Netstat Command on Mac

sccmg
加载评论中...