一次摸鱼的机会,看到群里小伙伴问了一嘴netstattnpl这个命令是干啥的,这个命令用过很多,但是我其实也没有认真研究过,但是这是一个问题,我不能放过它,而且netstat这个命令我日常就用来查询端口的监听状态了,所以趁着这次机会,一起搞懂netstat这个命令。 netstat这个命令在Linux、Windows和MacOS操作系统下都兼容,不同的是,netstat在UNIX下显示详细信息的命令是mannetstat,而在Linux和Windows下面是netstathelp。Linux下的netstat命令 当我在Linux下执行mannetstat命令之后,系统显示出来的提示着实让我吓一大跳,看来这个命令内容很多啊!不要被这么长的描述吓到,我们一步一步来。 首先来了解一下netstat这个命令是干啥的。 官方给我们的解释就是netstatshownetworkstatus 列出网络状态 但是这网络状态都有啥呢?带着疑问,我在Linux下执行了一下。 打印出来是一个六元组,六元组每一列的内容分别是 仔细看了一下这个六元组,这好像表明netstat这个命令是用于监控传入和传出的网络连接和状态的一个命令行工具啊。 从整体上来看,netstst的输出结果可以分为两部分,一部分是ActiveInternetconnections,称为活跃TCP连接,其中的RecvQ和SendQ指的是客户端发送队列和客户端接收队列。这两个队列的值一般都是0,如果不是0的话表示有消息堆积还没有发出去取出,这种情况一般很少见到。 另外一部分是ActiveUNIXdomainsockets,称为活跃的Unix域套接字,这部分中的socket和网络socket套接字一样,不同的是,这块只能用来本地通信,性能要比网络socket高。ActiveUNIXdomainsockets也是一个六元组,分别表示 netstat参数释义 下面我们来解释一下netstathelp列出来的一些参数,我们从最常见的一些参数开始入手,这样大家看起来也能形成阶段性记忆,不至于失去重点。netstata a这个参数默认会监控所有的socket连接。 包括已经监听的、已经建立连接的、客户端发送的等待服务器的和未被监听都会被列出来。 netstatatt netstatat和netstatt这俩后缀都是用来监听与TCP协议有关的端口,不同的是netstatat会监听所有State(状态)下的端口,而netstatt仅仅会监听ESTABLISHED状态的端口。 netstatat netstatt netstatauu 同样的,netstatau和netstatu都会监控与UDP有关的端口,不同的是netstatau会监听所有State(状态)下的端口,而netstatu仅仅会监听ESTABLISHED状态的端口。 netstatau netstatu 我这里测试是没有监控已经建立连接状态下的UDP协议。 netstatap 这条命令用于列出程序运行的端口,常用的命令是netstatapgrep程序名 比如我们要找http程序,就是Netstatapgrephttp 还可以直接列出端口号netstatapgrep8080 不过需要注意下,并不是所有的程序都能被找到,没有权限的不会显示,使用root权限可以查询所有信息。netstatl netstatl用于监听正在处于监听状态的端口(读起来还真有那么点费劲,为了读起来更顺畅,后面直接使用列出替换监听)。 netstatlt只用于列出所有监听TCP端口。 netstatlu只用于列出所有监听UDP端口。 netstatlx只用于列出所有监听UNIX端口。 netstats netstats用于列出所有端口的统计信息。 netstatst用于列出TCP端口的统计信息。 netstatsu用于列出UDP端口的统计信息。 netstatp netstatp可以与其他参数一起使用,例如netstatpt就可以列出服务名称和PID号。 netstatc 使用netstatc将每隔一秒列出网络信息。 netstatr netstatr用于列出路由核心信息。 netstatverbose 这条命令会列出系统支持的地址族(AddressFamily)。 AddressFamily简单来说就是底层是使用的哪种通信协议来递交数据的,如AFINET用的是TCPIPv4;AFINET6使用的是TCPIPv6;而AFLOCAL或者AFUNIX则指的是本地通信(即本次通信是在当前主机上的进程间的通信),一般用绝对路径的形式来指明。netstati netstati用来列出网络接口数据包,包括传输和接收具有MTU(最大传输单元)的数据包。 另外,netstatie还用于列出内核接口表,和ifconfig命令很相似 关于这个问题 所以,回到文章刚开始的那个疑问,netstattnpl是干什么用的,其实这就是几个参数的组合t:仅列出与tcp有关的信息n:以数字形式列出p:列出正在使用socketPID和程序名称l:列出正在监听的服务器socket 我们执行一下这个命令。 另外,在Linux中,已经推荐使用ss来替代netstat,使用iproute来替代netstatr,使用ipslink来替代netstati,使用ipaddr来替代netstatg了。 如果这篇文章对你有帮助,希望点赞并关注一下哦!