参考原帖。
参考:https://linux.die.net/man/8/netstat。
netstat
命令用来查看系统中所有的网络套接字连接情况。
netstat
[选项]
netstat
命令用来查看系统中所有的网络套接字连接情况,包括TCP、UDP和Unix套接字。也可以显示路由表,接口状态,masquerade 连接,多播成员(Multicast Memberships)等等。另外,它还可以列出处于监听状态(等待接入请求)的套接字,比如想确认系统中的web服务是否起来,就可以查看80端口有没有打开。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到。
netstat
的输出结构可以分为两个部分:
一个是Active Internet connections,称为有源TCP连接。其中”Recv-Q”和”Send-Q”指的是接收队列和发送队列。
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 VM01.root:ssh 61.149.11.230:21859 ESTABLISHED
tcp 0 0 localhost:51476 localhost:27017 ESTABLISHED
tcp 0 0 VM01.root:ssh 61.149.11.230:50883 ESTABLISHED
tcp 0 0 VM01.root:58300 47.89.193.173:3666 ESTABLISHED
另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 15049 /run/user/0/systemd/notify
unix 3 [ ] DGRAM 13640 /run/systemd/notify
unix 2 [ ] DGRAM 13645 /run/systemd/journal/syslog
unix 8 [ ] DGRAM 13660 /run/systemd/journal/socket
unix 25 [ ] DGRAM 10467 /run/systemd/journal/dev-log
实例:列出当前所有的连接(-a)
命令:netstat -a
输出:
root@iZhp3fz3iqsadyes2s8ayeZ:~# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:8838 *:* LISTEN
tcp 0 0 localhost:27017 *:* LISTEN
tcp 0 0 *:8330 *:* LISTEN
tcp 0 0 localhost:submission *:* LISTEN
......
实例:列出所有TCP端口(-t)
命令:netstat -at
输出:
root@iZhp3fz3iqsadyes2s8ayeZ:~# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 *:8838 *:* LISTEN
tcp 0 0 localhost:27017 *:* LISTEN
tcp 0 0 *:8330 *:* LISTEN
tcp 0 0 localhost:submission *:* LISTEN
示例:列出所有监听TCP的端口,数字显示
描述:查看本机监听的(-l)TCP连接(-t)的IP地址的数字显示(-n)。不适用-n的话,就会用端口的约定名称来显示,例如80端口,会显示成http。
命令:netstat -tnl
输出:
root@iZhp3fz3iqsadyes2s8ayeZ:~# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:8838 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:8330 0.0.0.0:* LISTEN
示例:获取本机的所有的TCP连接的进程名、进程号以及用户ID
描述:使用-p选项查看进程信息,-ep选项可以同时查看进程名和用户名。另外,-n和-e选项一起使用,User列的属性就是用户ID,而不是用户名。
查看本机所有的(al)TCP连接的(t)进程名(p)和用户名ID(ne)。
命令:netstat -altpen
root@iZhp3fz3iqsadyes2s8ayeZ:~# netstat -altpen
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:8838 0.0.0.0:* LISTEN 0 11863750 31212/bnewd
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 110 2945745 18546/mongod
tcp 0 0 0.0.0.0:8330 0.0.0.0:* LISTEN 0 22250263 13550/btnd
tcp 0 0 127.0.0.1:587 0.0.0.0:* LISTEN 0 12285119 11792/sendmail: MTA
这个可能是最屌的命令了,也可能是最常用的命令了。
还有一些实例,暂时不常用,有待完善。