云网牛站
所在位置:首页 > Linux命令 > 使用netstat命令来检查Linux中的TCP连接状态

使用netstat命令来检查Linux中的TCP连接状态

2019-02-18 15:03:18作者:戴进稿源:云网牛站

可以在Linux系统中使用netstat命令来查看TCP连接状态。

 

简介

TCP(Transmission Control Protocol)传输控制协议是一种标准,它定义了如何建立和维护两个系统之间的网络会话,以促进应用程序之间的数据交换,Internet协议(IP)定义了系统如何相互发送数据包。

 

Linux中的TCP状态列表

下面是可以在Linux中使用netstat或ss命令(ss命令_Linux ss命令使用详解:获取socket统计信息)查看的TCP连接状态列表:

使用netstat命令来检查Linux中的TCP连接状态

 

检查程序TCP状态

使用以下命令检查Linux服务器上的所有应用程序TCP状态,它将为你提供每种状态下的进程数:

# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -r

使用netstat命令来检查Linux中的TCP连接状态

 

通过将输出传递给grep来获取特定状态的进程列表

例如,要使进程处于CLOSEWAIT状态,请使用# netstat -apn | grep CLOSE_WAIT,可以进一步过滤此输出以获取处于CLOSEWAIT状态的进程的进程ID:

netstat -apn | grep CLOSE_WAIT | awk '{ print $7 }' | sort | uniq -c | sort -nr

 

使用head将输出限制为前10个进程

如果要使用CLOSE_WAIT TCP连接状态将输出限制为前10个进程,请使用head:

# netstat -apn | grep CLOSE_WAIT | awk '{ print $7 }' | sort | uniq -c | sort -nr | head -n 10

使用netstat命令来检查Linux中的TCP连接状态

上图中,表明ID为8166的进程具有3856个CLOSE_WAIT连接状态。

如果缺少TCP连接或进行故障排除,则可能需要使用大量CLOSE_WAIT连接状态来识别此过程,这可能意味着应用程序不会按预期关闭连接:

# ps 8166

使用netstat命令来检查Linux中的TCP连接状态

 

识别TCP连接状态的计数以及CLOSE_WAIT中具有多个状态的进程脚本

我创建了一个简单的bash脚本,它使用netstat命令来识别TCP连接状态的计数以及CLOSE_WAIT中具有多个状态的进程:

#!/bin/bash

# Script to print Linux TCP connections using netstat

# Guthub: https://github.com/jmutai

#  

#    vvvv vvvv-- the code from above

RED='3[0;31m'

NC='3[0m' # No Color

echo ""

echo -en "${RED} ALL TCP Connections Count: ${NC}\n"

netstat -nat | awk '{print $6}' | sort | uniq -c | sort -r

echo ""

echo -en "${RED} Top CLOSE_WAIT state TCP Connections: ${NC}\n"

netstat -apn | grep CLOSE_WAIT | awk '{ print $7 }' | sort | uniq -c | sort -nr | head -n 10

输出内容如下:

使用netstat命令来检查Linux中的TCP连接状态

 

相关主题

用ss、netstat、lsof、fuser、nmap、systemctl看进程占用的端口号

Linux命令子频道
精选文章
热门文章