场景

由于服务器经常半夜出现TCP连接数暴增,没办法及时查看处理,回头看记录又看不到现象,不好排查,故编写此脚本用于记录日志。

脚本内容#!/bin/bash

#任务计划设置此脚本每分钟执行一次即可,* * * * * sh /shell/tcp_stats.sh

now_time=$(date +%Y%m%d-%H:%M:%S)

log_dir="/var/log/tcp_stats/" #日志

time_range="3" #3秒内的差异值

max_tcp_diff="1000" #差异值的上限

function get_netstat_log(){

if [[ ! -d $log_dir ]];then

mkdir -p $log_dir

fi

before_tcp_stats=$(netstat -anltp | wc -l) #取当前tcp连接数

sleep $time_range

after_tcp_stats=$(netstat -anltp | wc -l) #隔${time_range}秒后取tcp连接数

diff=$(expr ${after_tcp_stats} - ${before_tcp_stats}) #计算差异值

if [[ $diff > $max_tcp_diff ]];then

netstat -anltp >${log_dir}${now_time}.log

fi

}

for ((i=1, i<6, i++))

do

get_netstat_log

sleep 7

done

Logo

更多推荐