Linux下shell命令用法及常见用例:netstat

参考原帖。

参考:https://linux.die.net/man/8/netstat。

netstat命令用来查看系统中所有的网络套接字连接情况。

命令格式

netstat [选项]

命令功能

netstat命令用来查看系统中所有的网络套接字连接情况,包括TCP、UDP和Unix套接字。也可以显示路由表,接口状态,masquerade 连接,多播成员(Multicast Memberships)等等。另外,它还可以列出处于监听状态(等待接入请求)的套接字,比如想确认系统中的web服务是否起来,就可以查看80端口有没有打开。

命令参数

  • -a或–all:显示所有选项,默认不显示LISTEN相关。
  • -t或–tcp:(TCP)仅显示TCP相关选项。
  • -u或–udp:(UDP)仅显示UDP相关选项。
  • -x或–unix:此参数的效果和指定”-A unix”参数相同。
  • -n或–numeric:拒绝显示别名,能显示数字的全部转化成数字。
  • -l或–listening:仅列出有在Listen(监听)的服务状态。
  • -g或–groups:显示多重广播功能群组组员名单。
  • -p或–programs:显示建立相关链接的程序名和PID。
  • -r或–route:显示路由信息,路由表。
  • -e或–extend:显示扩展信息,例如UID等。
  • -s或–statistics:按各个协议进行统计。
  • -c或–continuous:每隔一个固定时间,执行该netstat命令。
  • -g或–groups:显示多重广播功能群组组员名单。

提示: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

这个可能是最屌的命令了,也可能是最常用的命令了。

还有一些实例,暂时不常用,有待完善。

你可能感兴趣的:(Linux)