选择中心

Linux培训
美国上市教育机构

400-111-8989

Linux培训

linux培训 > Linux职场 

Linux系统中 你需要掌握的网络命令-netstat

  • 发布:守望
  • 来源:公众号【编程珠玑】
  • 时间:2019-06-26 17:43

今天小 编要跟大家分享的文章是关于中你需要掌握的网络命令-netstat。在调试 网络程序或者定位网络相关问题时,有一个命令不得不知,它就是netstat。netstat命令用 于查看网络连接,路由表,网络接口统计数据, 虚拟连接等信息。netstat的选项很多,今天小 编就来为大家分享一些netstat命令的实用技巧。

Linux系统中
你需要掌握的网络命令-netstat

一、查看某 个端口是否被占用

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

$ netstat -a|grep 6379

tcp 0 0 *:6379 *:* LISTEN

tcp6 0 0 [::]:6379 [::]:* LISTEN

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

当然你也可以使用lsof命令中的方法来查看。关于grep的用法,也可以参考《grep命令详解》,这里就不展开了,我们后 面会在很多地方用到。

二、查找占用端口的进程

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

$ netstat -ap|grep 6379

tcp 0 0 *:6379 *:* LISTEN 10011/redis-server

tcp6 0 0 [::]:6379 [::]:* LISTEN 10011/redis-server

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

三、查看指定协议的连接

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

$ netstat -at #-t,查看tcp连接

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 192.168.0.103:42468 113.96.233.139:https ESTABLISHED

tcp 0 0 192.168.0.103:59326 123.58.182.252:https TIME_WAIT

tcp 0 0 192.168.0.103:59328 123.58.182.252:https TIME_WAIT

(未显示完全)

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

$ netstat -au

udp 0 0 *:36305 *:*

udp 0 0 127.0.1.1:domain *:*

udp 0 0 *:bootpc *:*

udp 0 0 *:ipp *:*

(未显示完全))

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

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

四、查看处 于监听状态的连接

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

$ netstat -l

Proto Recv-Q Send-Q Local Address Foreign Address State

tcp 0 0 127.0.1.1:domain *:* LISTEN

tcp 0 0 localhost:5941 *:* LISTEN

tcp 0 0 localhost:ipp *:* LISTEN

tcp 0 0 localhost:socks *:* LISTEN

tcp 0 0 *:6379 *:* LISTEN

(未显示完全)

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

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

$ netstat -anp |grep ESTAB

(Not all processes could be identified, non-owned process info

will not be shown, you would have to be root to see it all.)

tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED 2613/chrome

tcp 0 0 192.168.0.103:38024 108.177.125.188:443 ESTABLISHED 2613/chrome

五、不解析主机,端口等信息

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

123.58.182.252:https

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

$ netstat -anp

一定要 自己尝试一下奥!

六、持续输出连接信息

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

$ netstat -npc

这样,它就会 每隔一秒执行一次。当然你完全可以使用watch命令,关于watch命令的使用可以参考《解放你的双手-watch》。

七、查看用户和连接的iNode

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

$ netstat -ent

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State User Inode

tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED 1000 134891

tcp 0 0 192.168.0.103:46556 121.9.246.106:443 TIME_WAIT 0 0

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

$ id 1000

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

八、查看连 接相关的定时器

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

$ netstat -nto

Active Internet connections (w/o servers)

Proto Recv-Q Send-Q Local Address Foreign Address State Timer

tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED keepalive (18.69/0/0)

tcp 1 1 192.168.0.103:43718 113.96.233.139:443 LAST_ACK on (19.97/7/0)

tcp 0 0 192.168.0.103:38024 108.177.125.188:443 ESTABLISHED keepalive (34.76/0/0)

tcp 0 0 192.168.0.103:60362 123.58.182.252:443 TIME_WAIT timewait (6.70/0/0)

tcp6 0 0 127.0.0.1:9614 127.0.0.1:59736 ESTABLISHED off (0.00/0/0)

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

· keepalive keepalive的时间计时

· on 重发的时间计时

· off 没有时间计时

· timewait 等待时间计时

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

九、查看数据包统计信息

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

$ netstat -s

(仅显示了TCP协议的结果)

Tcp:

3067 active connections openings

1 passive connection openings

173 failed connection attempts

587 connection resets received

10 connections established

657576 segments received

456349 segments send out

2700 segments retransmited

16 bad segments received.

1321 resets sent

十、查看路由信息

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

$ netstat -r

Kernel IP routing table

Destination Gateway Genmask Flags MSS Window irtt Iface

default 192.168.0.1 0.0.0.0 UG 0 0 0 wlp3s0

link-local * 255.255.0.0 U 0 0 0 wlp3s0

192.168.0.0 * 255.255.255.0 U 0 0 0 wlp3s0

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

总结

netstat命令是 我们定位网络相关问题的利器,如果你还不会使用,那么最 好花几分钟学习一下。

以上就 是小编今天为大家分享的关于Linux系统中 你需要掌握的网络命令-netstat的文章,希望本篇文章中关于netstat命令的 介绍能够对小伙伴们有所帮助。想要了解更多Linux相关知识,记得关注官网。最后祝 愿小伙伴们工作顺利,成为一名优秀的。

【免责声明:本文图 片及文字信息均由小编转载自网络,旨在分享提供阅读,版权归原作者所有,如有侵 权请联系我们进行删除。】

预约申请免费试听课

填写下 面表单即可预约申请免费试听!怕钱不够?可就业 挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:关于Linux操作系统中的shell程序设计
下一篇:帮助Linux运维工 程师编写脚本的技巧有哪些?

帮助Linux运维工 程师编写脚本的技巧有哪些?

Linux系统中 你需要掌握的网络命令-netstat

关于Linux操作系统中的shell程序设计

Linux运维人 员应该知道的免费Linux下载工具

选择城市和中心
黑龙江省

吉林省

河北省

河南省

湖南省

贵州省

云南省

广西省

海南省

友情链接:    鍏冨疂妫嬬墝缃戠珯       鐧惧埄褰╃エ