Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
从整体上看,netstat的输出结果可以分为两个部分:
- 一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列,这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积,这种情况非常少见。
- 另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
常见参数
-a (all)显示所有选项,netstat默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名(macOS中表示协议 -p protocol)
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计 (重要)
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
实用命令实例
1. 列出所有端口 (包括监听和未监听的)
列出所有端口: netstat -a
列出所有tcp端口: netstat -at
列出所有udp端口: netstat -au
2. 列出所有处于监听状态的 Sockets
只显示监听端口: netstat -l
只列出所有监听tcp端口: netstat -lt
只列出所有监听udp端口: netstat -lu
只列出所有监听UNIX端口: netstat -lx
3. 显示每个协议的统计信息
显示所有端口的统计信息 netstat -s
显示udp或tcp端口的统计信息 netstat -st 、 netstat -su
4.显示PID和进程名
netstat -anp
5.不显示主机,端口和用户名 (host, port or user)
当你不想让主机,端口和用户名显示,使用 netstat -n。将会使用数字代替那些名称。
netstat -an
6. 持续输出 netstat 信息
每隔2秒输出网络信息: netstat -c 2
7.显示核心路由信息
netstat -rn
8.显示网络接口列表
netstat -i
-
查看所有连接
netstat -an -
查看本机开启的端口:
netstat -anl -
查看运行在指定端口的进程;
netstat -anp | grep 80 -
查找程序运行的端口:
netstat -anp | grep ssh -
查看服务对应的端口号
cat /etc/services