Netstat 简介
Netstat 是linux下的一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,还能列出处于监听状态(即等待接入请求)的套接字。如果你想查看系统某一个端口是否被占用,就可以用netstat
命令。另外netstat
还可以列出本机路由信息和网络接口信息等。
1. 列出网络连接
1 | netstat -antuple |
由于netstat命令参数比较多,查看网络连接相关,常用的就是上面这些, 这里为了方便记忆组合了下:an tuple, 两个简单的英文单词~
参数说明:
- -a: –all, 显示所有连接的socket (默认: connected)
- -n: –numeric, 不解析名称,包括主机名,端口名和用户名
- -t: –tcp, 只显示tcp连接
- -u: –udp, 只显示udp连接
- -p: –programs, 显示连接进程的PID或进程名
- -l: –listening, 显示正在监听的socket
- -e: –extend, 显示更多信息,包括连接进程的用户名等
注意:
- 将 -n 和 -e 选项一起使用,会列出用户的 ID 号,而不是用户名。
- 使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。
2. 显示内核路由信息
1 | netstat -rn |
使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。也可以使用 -n 选项禁止名称解析。
参数说明:
- -r: –route, 显示内核路由信息
- -n: 与上面相同
3. 显示网络接口信息
1 | netstat -ie |
使用 -i 选项可以输出网络接口信息, 但是输出的信息比较原始。搭配 -e 选项,可以输出用户友好的信息,输出结果与 ifconfig 一样。
参数说明:
- -i: –interfaces, 显示网络接口信息
- -e: 与上面相同
4. 其他选项
- -s: –statistics, 显示统计数据
- -g: –groups, 显示多播,组播信息
- -c: –continuous, 持续打印信息
5. 用法举例
5.1 打印 active 状态的连接
active 状态的套接字连接用 “ESTABLISHED” 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:
1 | $ netstat -atnp | grep ESTA |
配合 watch 命令监视 active 状态的连接:
1 | $ watch -d -n0 "netstat -atnp | grep ESTA" |
5.2 查看服务是否在运行
比如查看mysql服务:
1 | $ sudo netstat -anple | grep mysql |