0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Netstat命令实用技巧介绍

Linux爱好者 来源:YXQ 2019-08-09 17:32 次阅读

在调试网络程序或者定位网络相关问题时,有一个命令不得不知,它就是netstat。netstat命令用于查看网络连接,路由表,网络接口统计数据, 虚拟连接等信息。netstat的选项很多,但是本文准备介绍一些netstat命令的实用技巧。

查看某个端口是否被占用

如果你遇到“Address already in use”的错误,那么你就需要好好看看是不是端口已经被占用了。-a(all)参数用于列出所有监听和非监听状态的连接。

$netstat-a|grep6379tcp00*:6379*:*LISTENtcp600[::]:6379[::]:*LISTEN

这里我们可以看到,有一个tcp连接使用了6379端口,并且当前处于LISTEN状态,这些状态信息对于分析网络连接问题非常有帮助,我们将会在后面的文章中看到它们大放异彩。

当然你也可以使用lsof命令中的方法来查看。

查找占用端口的进程

前面虽然知道已经有进程使用了6379端口,但是不知道是哪个进程,因此为了知道进程信息,需要使用-p(program)参数:

$netstat-ap|grep6379tcp00*:6379*:*LISTEN10011/redis-servertcp600[::]:6379[::]:*LISTEN10011/redis-server

这个时候就可以看到是进程id为10011的redis-server进程占用了6379端口,至此要杀要剐就随你便了。

查看指定协议的连接

我们都知道,除了TCP之外还有UDP,如果我们想查看指定类型的连接呢?

$netstat-at#-t,查看tcp连接ProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00192.168.0.103:42468113.96.233.139:httpsESTABLISHEDtcp00192.168.0.103:59326123.58.182.252:httpsTIME_WAITtcp00192.168.0.103:59328123.58.182.252:httpsTIME_WAIT(未显示完全)

以此种方式,可以看到所有的TCP连接,而对于UDP连接,只需要使用-u(UDP):

$netstat-auudp00*:36305*:*udp00127.0.1.1:domain*:*udp00*:bootpc*:*udp00*:ipp*:*(未显示完全))

当然了,这两个参数也是可以一起用的。

除此之外,还可以使用-4或-6来指定查看ipv4还是ipv6的连接:

查看处于监听状态的连接

对于还没有建立完整连接的服务器来说,它启动后正常的状态是LISTEN状态,如果只想查看处于该状态的连接,则可以使用-l(LISTEN)参数:

$netstat-lProtoRecv-QSend-QLocalAddressForeignAddressStatetcp00127.0.1.1:domain*:*LISTENtcp00localhost:5941*:*LISTENtcp00localhost:ipp*:*LISTENtcp00localhost:socks*:*LISTENtcp00*:6379*:*LISTEN(未显示完全)

这个时候记得不要带上-a参数,它会列出所有。

而你如果要查看其他状态的连接,只需要结合grep使用即可,例如,查看ESTABLISHED状态的连接:

$netstat-anp|grepESTAB(Notallprocessescouldbeidentified,non-ownedprocessinfowillnotbeshown,youwouldhavetoberoottoseeitall.)tcp00192.168.0.103:42468113.96.233.139:443ESTABLISHED2613/chrometcp00192.168.0.103:38024108.177.125.188:443ESTABLISHED2613/chrome

不解析主机,端口等信息

不知道你有没有发现,在执行前面的命令的时候,速度很慢,让你一度怀疑是不是自己电脑太卡了。实际上,你观察前面的输出结果就会发现,很多连接的主机名和端口对应的应用都解析出来了,例如:

123.58.182.252:https

所以慢是因为它需要做解析,使用-n(numeric)参数就可以快速显示原始数字端口或地址了:

$netstat-anp

一定要自己尝试一下奥!

持续输出连接信息

你在定位网络相关问题的时候,总不想执行一次观察一次吧?能不能自动反复执行查看呢?当然可以啦!可以使用-c(continuous)参数:

$netstat-npc

这样,它就会每隔一秒执行一次。

查看用户和连接的iNode

这条连接是哪个用户建立的呢?unix下一切皆文件,那么这个连接的iNode是多少呢?借助-e(extend)参数可以看到这些信息:

$netstat-entActiveInternetconnections(w/oservers)ProtoRecv-QSend-QLocalAddressForeignAddressStateUserInodetcp00192.168.0.103:42468113.96.233.139:443ESTABLISHED1000134891tcp00192.168.0.103:46556121.9.246.106:443TIME_WAIT00

可以看到在使用-e参数后,多了最后两列,分别是user和Inode。而使用id命令可以知道该user到底是谁:

$id1000uid=1000(hyb)gid=1000(hyb)groups=1000(hyb),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

查看连接相关的定时器

使用-o可以查看和连接相的定时器信息,

$netstat-ntoActiveInternetconnections(w/oservers)ProtoRecv-QSend-QLocalAddressForeignAddressStateTimertcp00192.168.0.103:42468113.96.233.139:443ESTABLISHEDkeepalive(18.69/0/0)tcp11192.168.0.103:43718113.96.233.139:443LAST_ACKon(19.97/7/0)tcp00192.168.0.103:38024108.177.125.188:443ESTABLISHEDkeepalive(34.76/0/0)tcp00192.168.0.103:60362123.58.182.252:443TIME_WAITtimewait(6.70/0/0)tcp600127.0.0.1:9614127.0.0.1:59736ESTABLISHEDoff(0.00/0/0)

最后的timer列相关字段含义如下:

keepalive keepalive的时间计时

on 重发的时间计时

off 没有时间计时

timewait 等待时间计时

关于定时器的含义,需要对TCP协议有较多理解,这里就不展开了。

查看数据包统计信息

各种协议的数据包的收发情况如何呢?连接数量如何呢是用-s(statistics)参数可以查看:

$netstat-s(仅显示了TCP协议的结果)Tcp:3067activeconnectionsopenings1passiveconnectionopenings173failedconnectionattempts587connectionresetsreceived10connectionsestablished657576segmentsreceived456349segmentssendout2700segmentsretransmited16badsegmentsreceived.1321resetssent

查看路由信息

使用-r(route)参数可以查看路由相关信息,例如:

$netstat-rKernelIProutingtableDestinationGatewayGenmaskFlagsMSSWindowirttIfacedefault192.168.0.10.0.0.0UG000wlp3s0link-local*255.255.0.0U000wlp3s0192.168.0.0*255.255.255.0U000wlp3s0

当然你也可以借助route命令完成这样简单的工作。

总结

netstat命令是我们定位网络相关问题的利器,如果你还不会使用,那么最好花几分钟学习一下。netstat更详细的字段解释可以参考其手册。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 端口
    +关注

    关注

    4

    文章

    820

    浏览量

    31584
  • netstat
    +关注

    关注

    0

    文章

    8

    浏览量

    2057

原文标题:不可不知的网络命令:netstat

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux netstat命令详解

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
    发表于 12-26 09:45 654次阅读

    每日一教labview视频教程【12.20】labview信号处理实用技巧

    ,还将介绍常用信号处理方法的适用对象,包括频谱分析、联合时频分析、小波分析、阶次分析等信号处理方法的适用对象和注意事项。 labview信号处理实用技巧 配套资源:[hide][/hide]labview信号处理实用技巧视屏:h
    发表于 12-20 10:26

    LabVIEW 实用技巧.

    Labview实用技巧
    发表于 06-29 12:38

    netstat命令详解

    在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。Netstat是控制台
    的头像 发表于 02-10 09:31 5675次阅读
    <b class='flag-5'>netstat</b><b class='flag-5'>命令</b>详解

    netstat怎么使用

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
    的头像 发表于 02-10 10:22 3176次阅读
    <b class='flag-5'>netstat</b>怎么使用

    netstat查看端口占用

    Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机
    的头像 发表于 02-10 10:59 4239次阅读
    <b class='flag-5'>netstat</b>查看端口占用

    LabVIEW编程的实用技巧系列(5)

    LabVIEW编程的实用技巧系列第五讲视频教程
    的头像 发表于 06-25 12:11 1992次阅读
    LabVIEW编程的<b class='flag-5'>实用技巧</b>系列(5)

    Linux网络状态工具ss命令使用详解

    很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat
    的头像 发表于 11-12 15:43 3958次阅读

    Linux查看资源使用情况和性能调优常用的命令

    目录 前言 top命令 htop命令 ps命令 free命令 vmstat命令 iosat命令
    的头像 发表于 11-12 17:54 3968次阅读

    探究Go语言如何实现简易版netstat命令

    netstat 使用 go 语言实现是什么操作?本文从 netstat 原理出发详细解读了这一实践。 netstat 工作原理 netstat 命令
    的头像 发表于 07-27 10:35 1562次阅读
    探究Go语言如何实现简易版<b class='flag-5'>netstat</b><b class='flag-5'>命令</b>

    Netstat-monitor网络连接监控工具

    netstat-monitor.zip
    发表于 05-05 10:05 0次下载
    <b class='flag-5'>Netstat</b>-monitor网络连接监控工具

    Netstat 命令实例介绍

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
    的头像 发表于 09-19 16:18 678次阅读

    netstat命令故障排查总结

    Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。
    的头像 发表于 01-30 09:46 1672次阅读

    常用的linux命令有哪些类型

    很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat
    发表于 08-04 10:51 159次阅读

    后台开发中netstat命令使用方法

    后台开发,netstat命令总是绕不过,不仅工作中经常用过,面试也是考的多。netstat命令,对应的选项比较多,功能比较强大。netstat
    的头像 发表于 10-08 16:21 405次阅读