连接Linux下如何查看Socket连接状态(linux查看socket)

  Linux服务器作为一种广泛使用的服务器操作系统,有时需要对Socket连接进行连接状态的查看,以下提供几种查看Linux下Socket连接状态的方法。

  1. 使用netstat命令

  Netstat是Linux查看系统状态的一个命令,可以查看当前网络状态,包括TCP/IP、UDP(User Date Protocol)等查看实例如下:

$ netstat -an #查看全部的网络端口

Active Internet connections (servers and established)

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

tcp 0 0 0.0.0.0:3389 0.0.0.0:* LISTEN

tcp 0 0 192.168.1.1:3389 172.17.165.243:1048 ESTABLISHED

tcp 0 0 192.168.1.1:5357 192.168.1.240:8899 ESTABLISHED

  获取到的结果中包含了当前网络的连接情况,其中Local Address 代表本机地址,Foreign Address 代表外部的地址,state 表明链接的状态,当操作netstat时,可以使用后面的参数来细化输出:

#查看TCP端口

$ netstat -at

#查看UDP端口

$ netstat -au

#仅查看处于 Listening 状态的 TCP 端口

$ netstat -atnl

#查看指定端口 22 状态

$ netstat -ap | grep ssh

  netstat 由于使用范围广,因此有多少参数可以使用,可以查看某一台机器所有生效的连接,也可以查看指定端口的连接状态。

  2. 使用lsof命令

  除了netstat,还可以使用lsof(List Open File)查看当前的Socket状态,查看示例如下:

$ lsof –n | grep TCP

sshd 3520 root 3u IPv4 157344 0t0 TCP *:ssh (LISTEN)

sshd 3520 root 4u IPv6 157346 0t0 TCP *:ssh (LISTEN)

vncserver 3549 x 5u IPv4 176300 0t0 TCP 127.0.0.1:5801 (LISTEN)

  lsof结果中多了最后一列是PID(进程标识),很容易查看出正在使用什么进程,可以使用如下命令查看,lsof可以生成中文输出,方便查看进程:

$ lsof –n –i TCP

$ lsof -n –i tcp:8888 # 监听指定端口 8888

$ lsof –n | grep TCP | grep LISTEN #仅查看处于 Listening 状态的 TCP 端口.

  以上方法可以初步查看Linux下Socket连接状态,通过查看便可以对网络自50端口的开放、被防火墙封锁等进行快速定位,从而可以更快捷的解决网络的问题。


数据运维技术 » 连接Linux下如何查看Socket连接状态(linux查看socket)