linux命令看进程的tcp链接,使用netstat命令来检查Linux中的TCP连接状态

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

简介

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

Linux中的TCP状态列表

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

957ace792d31fa767c7f860fc781b2b2.png

检查程序TCP状态

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

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

aebed35416c5f65a548fa5112062a67a.png

通过将输出传递给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

8f2cf28c6e5a3a245537840c4749f737.png

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

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

# ps 8166

d780afc80d0b81bb5a2e0c68c05c38ab.png

识别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

输出内容如下:

e8046ab50ce2a0f4e9ba79e1b3350980.png

相关主题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值