Linux自学之旅-基础命令(netstat网络状态查看命令)
前言
1.上一节我们讲述了网路探测命令ping,还没看过的可点击下方链接进入查看:ping
2.这一节我们讲述网络状态查看命令netstat
提示:以下是本篇文章正文内容
一、netstat命令格式
- 命令名称:netstat
- 命令全称:Print network connections,routing tables,interface statistics,masquerade connections,and multicast memberships。
- 所在路径:/usr/bin/netstat
- 执行权限:所有用户
- 功能描述:输出网络连接、路由表、接口统计、伪装连接、组播成员
命令格式
[root@dns ~]# netstat [选项]
常用选项:
-a:列出所有网络状态
-c 秒数:指定每隔几秒刷新一次网络状态
-n:使用IP地址和端口号显示,不使用域名与服务名
-p:显示PID和程序名
-t:显示使用Tcp协议端口的连接状态
-u:显示使用UDP协议端口的连接状态
-l:仅显示监听状态的连接
-r:显示路由表
二、netstat使用
1.查看本机开启的端口
比较常用,选项搭配是“-tuln”。
[root@dns ~]# netstat -tuln
Active Internet connections (only servers)
(协议)(接受队列)(发送队列)(本机的IP与端口号) (远程主机的IP与端口号) (状态)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:35802 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:41435 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::6000 :::* LISTEN
tcp6 0 0 :::20048 :::* LISTEN
tcp6 0 0 :::21 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 ::1:6010 :::* LISTEN
tcp6 0 0 :::32956 :::* LISTEN
tcp6 0 0 :::2049 :::* LISTEN
tcp6 0 0 :::35716 :::* LISTEN
udp 0 0 0.0.0.0:976 0.0.0.0:*
udp 0 0 0.0.0.0:2049 0.0.0.0:*
udp 0 0 192.168.122.1:53 0.0.0.0:*
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:20048 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 127.0.0.1:659 0.0.0.0:*
udp 0 0 0.0.0.0:47837 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp 0 0 0.0.0.0:56042 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp 0 0 0.0.0.0:47489 0.0.0.0:*
udp6 0 0 :::56234 :::*
udp6 0 0 :::976 :::*
udp6 0 0 :::2049 :::*
udp6 0 0 :::20048 :::*
udp6 0 0 :::111 :::*
udp6 0 0 ::1:323 :::*
udp6 0 0 :::53662 :::*
- Proto:网络连接的协议,一般是Tcp和UDP协议
- Recv-Q:接收的数据(已经在本地缓冲中,还没被进程取走的数据)
- Send-Q:发送出去的,对方还没接收的数据
- Local Address:本机的IP地址和端口号
- Foreign Address:远程主机的IP地址和端口号
- State:状态。
1.LISTEN:监听状态,只有Tcp协议需要监听,UDP不需要
2.ESTABLISHED:已经建立连接的状态。使用了“-l”选项则看不到此状态。
(这两个是我们常用的状态,一个代表正在监听,一个代表已经建立连接;其他状态大家自查)
2.查看本机有哪些程序开启的端口
使用“-p”选项即可看到占用端口的程序名称和程序的PID
[root@dns ~]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 6316/rpcbind
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN 6927/X
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 6799/rpc.mountd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 7248/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6779/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 6781/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 6913/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 8867/sshd: root@pts
tcp 0 0 0.0.0.0:35802 0.0.0.0:* LISTEN 6798/rpc.statd
tcp 0 0 0.0.0.0:41435 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:2049 0.0.0.0:* LISTEN -
tcp6 0 0 :::111 :::* LISTEN 6316/rpcbind
tcp6 0 0 :::6000 :::* LISTEN 6927/X
tcp6 0 0 :::20048 :::* LISTEN 6799/rpc.mountd
tcp6 0 0 :::21 :::* LISTEN 6797/vsftpd
tcp6 0 0 :::22 :::* LISTEN 6779/sshd
tcp6 0 0 ::1:631 :::* LISTEN 6781/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 6913/master
tcp6 0 0 ::1:6010 :::* LISTEN 8867/sshd: root@pts
tcp6 0 0 :::32956 :::* LISTEN 6798/rpc.statd
tcp6 0 0 :::2049 :::* LISTEN -
tcp6 0 0 :::35716 :::* LISTEN -
udp 0 0 0.0.0.0:976 0.0.0.0:* 6316/rpcbind
udp 0 0 0.0.0.0:2049 0.0.0.0:* -
udp 0 0 192.168.122.1:53 0.0.0.0:* 7248/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 7248/dnsmasq
udp 0 0 0.0.0.0:20048 0.0.0.0:* 6799/rpc.mountd
udp 0 0 0.0.0.0:111 0.0.0.0:* 6316/rpcbind
udp 0 1536 0.0.0.0:123 0.0.0.0:* 23260/ntpdate
udp 0 0 127.0.0.1:659 0.0.0.0:* 6798/rpc.statd
udp 0 0 0.0.0.0:47837 0.0.0.0:* -
udp 0 0 0.0.0.0:5353 0.0.0.0:* 6364/avahi-daemon:
udp 0 0 0.0.0.0:56042 0.0.0.0:* 6798/rpc.statd
udp 0 0 127.0.0.1:323 0.0.0.0:* 6335/chronyd
udp 0 0 0.0.0.0:47489 0.0.0.0:* 6364/avahi-daemon:
udp6 0 0 :::56234 :::* -
udp6 0 0 :::976 :::* 6316/rpcbind
udp6 0 0 :::2049 :::* -
udp6 0 0 :::20048 :::* 6799/rpc.mountd
udp6 0 0 :::111 :::* 6316/rpcbind
udp6 0 0 :::123 :::* 23260/ntpdate
udp6 0 0 ::1:323 :::* 6335/chronyd
udp6 0 0 :::53662 :::* 6798/rpc.statd
大家可以看到结果多了“PID/程序名”,可以知道是哪个程序占用了端口。(一般配合管道符可以轻松过滤你想过滤的程序)
3.查看所有连接
配合选项“-an”即可,不过输出结果过多,一般很多状态都会出现,这里就不演示了,大家可以自己试试。(netstat -an即可)
总结
本节我们主要讲述了netstat命令,及其常用用法。
查看程序占用了计算机哪些端口:netstat -tulnp(常用)