当前位置: 首页 > Linux

netstat在mac上不好用,试试lsof

时间:2023-04-06 02:14:34 Linux

笔者这里主要说说netstat和lsof的使用,以及netstat在mac系统中很多功能的缺失。在这种情况下,lsof是一个很好的补充。我个人比较喜欢使用lsof,而对于netstat,即使在linux下,也推荐使用ss而不是netstatnetstat命令列出了你的电脑网络通讯的详细信息,网络通讯包括你的电脑通过所有端口与外界对话以及应用程序的所有方式。因此,Conquernetstat可以帮助您了解计算机连接的方式和方式。netstat将报告您计算机的所有活动网络连接,您可以根据现代网络设备执行的功能数量来估计此列表的长度。可以超过1000行。过滤netstat的输出对于了解计算机上激活的端口上发生的情况至关重要。它的内置标志允许您设置选项,从而限制命令的输出范围。netstatflagsandoptions要查看netstat的所有有效选项,可以键入mannetstat打开netstat手册提示:man是manual的缩写语法要为netstat添加标志和选项,可以使用以下语法netstat[-AabdgiLlmnqrRsSvWx][-cqueue][-faddress_family][-Iinterface][-pprotocol][-wwait]警告:netstat在macOS和linux下的工作方式不同,所以在macOS下使用flags和语法会导致意想不到的结果常用的flags有此处列出的标志:-a在netstat输出中包括服务器端口-g列出与多播连接相关的信息-Iinterface为指定接口提供数据包。所有有效的接口(interfaces)都可以通过-i标志查看,但是en0通常是默认的传出网络接口(interface)-n隐藏带有名称的远程地址标签,好处是:大大加快了netstat的输出,而仅以有限信息为代价-pprotocol列出与特定网络协议(protocol)相关的流量。完整的协议(protocol)列表位于/etc/protocols,但最重要的协议是udp和tcp-r显示路由表,显示数据包在网络中是如何路由的-s显示所有协议的网络统计信息,无论它们是否是否处于活动状态-v增加详细程度,特别是通过添加一列来显示与每个打开端口相关的统计信息进程ID(pid)netstat使用示例$netstat-apvTCP此命令仅返回Mac上的TCP连接,包括开放端口和活动端口。它还使用详细输出,列出与每个连接关联的PIDgrep-i"listen"输出关键字为"listen"的数据,发现macOS版本的netstat缺少很多用户期待的特性。因此,它在macOS上不如在Windows上有用。这时,lsof命令取代了netstat并提供了netstat缺少的许多功能。用lsof补充netstatlsoflsof显示当前在任何应用程序中打开的任何文件,你也可以用它来检查与应用程序关联的开放端口(ports),运行lsof-i,你会看到所有与互联网通信的应用程序的列表显示每个打开的文件或互联网连接的lsof标志和选项通常很冗长。这就是为什么lsof带有标志来限制特定结果的原因。以下是最重要的常用标志。常用的标志列在这里:-i显示所有打开的网络连接(opennetworkconnections)和使用这个连接(connection)的进程(process)的名称。如果加一个4,比如-i4,会显示IPv4连接数;例如-i6将显示IPv6连接。-i标志可以继续扩展以指定更多详细信息,-iTCP或-iUDP将仅返回TCP或UDP连接。-iTCP:25返回端口为25的TCP连接,也可以指定端口范围,如-iTCP:25-50。使用-i@1.2.3.4将返回ip为1.2.3.4的IPv4地址。IPv6也是如此。@符号同样可以用来指定hostname,-s强制显示文件大小(filesize)。但是,当与-i配对时,其含义不同:它允许用户指定协议和状态-p将lsof限制为特定进程ID(PID)。可以用-p设置多个PID123、456、789等,进程ID也可以用^排除,比如123、^456,具体排除PID456-P禁止端口号到端口名的转换,从而加快输出速度-n禁止将网络号转换为主机名(网络号到主机名)。当与上面的-P一起使用时,它可以显着加快lsof的输出-uuser仅返回指定用户lsof拥有的命令使用示例$lsof-nP-iTCP@lsof.itap:513这个看起来很复杂的命令列出了所有主机名为lsof.itap且端口为513的TCP连接已关闭。还使用-P消除了将名称连接到IP地址和端口的需要,使命令运行速度显着加快$lsof-iTCP-sTCP:LISTEN此命令返回状态为LISTEN的每个TCP连接,显示所有打开的TCP端口。它还列出了与这些开放端口关联的进程。这是对netstat的重大升级,后者最多列出PID$sudolsof-i-u^$(whoami)此命令返回不属于当前登录用户的所有连接。使用sudo运行以查看不属于您的任务。在没有sudo的情况下运行此命令将返回一个空列表。其他检查网络的网络命令是arp、ping和ipconfig。