sysinfo.sh

#!/bin/bash
#System Monitoring Script
while [ 1 ]
do
#本机需开启postfix或sendmail服务。
#报警邮件地址设置 
MAILTO=ytyxjk@163.com
#设置脚本运行间隔时间。单位(秒)。
RUNTIME=3600
#内存使用率监控设置,单位 (%)
MEMTHRE=85
#流量监控设置
#要监控的网卡
ETHX=eth0
#填写大于多少MB的时候发送警报,单位(MB)
INFLOWTHREMB=50
OUTFLOWTHREMB=50
#填写大于多少KB的时候发送警报,单位(KB)
INFLOWTHREKB=8000
OUTFLOWTHREKB=8000
#TCP连接状态数量监控设置
#填写最大连接的个数
TIME_WAIT=4000
FIN_WAIT1=500
FIN_WAIT2=200
ESTABLISHED=4000
SYN_RECV=100
CLOSE_WAIT=100
CLOSING=1000
LAST_ACK=3000
#CPU使用率监控设置
#填写cpu使用率大于多少发送报警,单位(%)
CPUTHRE=80
#硬盘使用大小设置
#填写硬盘占用率,单位(%)
ROOT=80
BOOT=80
#HOME=80
#调试模式开关。(YES/NO)
DBUG=NO
# 监 控 脚 本 执 行 内 容
################################################################################
time=`date +"%Y-%m-%d %H:%M:%S"`


#内存监控部分
NULL=/dev/null
MEM=`free -m |grep Mem |awk '{print $3/$2*100}'`
MEMB=`free -m |grep Mem |awk '{print $2,$4+$6+$7}'|awk '{print $1,$1-$2}'| awk '{print $2/$1*100}'`
memuse=`free -m|grep "buffers/cache"|awk '{print $3}'`
memtotal=`free -m|grep "Mem"|awk '{print $2}'`
memory=`echo "$memuse/$memtotal*100"|bc -l|cut -d. -f1`
MA=`expr $memory \> $MEMTHRE `
if [ $MA -eq 1 ] ; then
echo $time MEM内存警告,当前内存占用率为$MEM %,大于$MEMTHRE %. | mail -s '9.20-1.MEM warning' $MAILTO 
fi
MB=`expr $MEMB \> $MEMTHRE`
if [ $MB -eq 1 ] ; then
echo $time MEMB内存警告,当前内存占用率为$MEMB %,大于$MEMTHRE % | mail -s '9.20-2.MEMB warning' $MAILTO
fi


sleep 1
#流量监控部分
FLOWA=/tmp/.flow
ifconfig $ETHX |grep "RX byte" |awk '{print $2" "$6}' |awk -Fbytes: '{print "INPUT "$2"OUTPUT "$3}'\ > $FLOWA
INPUTA=`cat $FLOWA |awk '{print $2}'`
OUTPUTA=`cat $FLOWA |awk '{print $4}'`
sleep 1
ifconfig $ETHX |grep "RX byte" |awk '{print $2" "$6}' |awk -Fbytes: '{print "INPUT "$2"OUTPUT "$3}'\ > $FLOWA
INPUTB=`cat $FLOWA |awk '{print $2}'`
OUTPUTB=`cat $FLOWA |awk '{print $4}'`
INPUTC=`echo "$INPUTB-$INPUTA" | bc`
OUTPUTC=`echo "$OUTPUTB-$OUTPUTA"| bc`
INPUTMBA=`echo "$INPUTC/1024"| bc`
OUTPUTMBA=`echo "$OUTPUTC/1024"| bc`


INMBF=/tmp/.inputMB
OUTMBF=/tmp/.outputMB
echo `echo "scale=2;$INPUTMBA/1024"| bc` MB > $INMBF
echo `echo "scale=2;$OUTPUTMBA/1024"| bc` MB > $OUTMBF
INMB=`cat $INMBF |awk '{print $1}'`
OUTMB=`cat $OUTMBF |awk '{print $1}'`


#if [ $INPUTMBA -gt 1024] ; then
#if [ $INMB -gt $INFLOWTHREMB] ;then
#echo $time 流量警告,in当前速率$INMB MB/秒,大于$INFLOWTHREMB MB/秒 | mail -s '9.20-3.in mb warning' $MAILTO
#fi
#if [ $OUTMB -gt $OUTFLOWTHREMB] ;then
#echo $time 流量警告,out当前速率$OUTMB MB/秒 大于$OUTFLOWTHREMB MB/秒 | mail -s '9.20-4.out mb warning' $MAILTO
#fi
#else
INKBF=/tmp/.inputKB
OUTKBF=/tmp/.outputKB
echo $INPUTMBA KB > $INKBF
echo $OUTPUTMBA KB > $OUTKBF
INKB=`cat $INKBF |awk '{print $1}'`
OUTKB=`cat $OUTKBF |awk '{print $1}'`


if [ $INKB -gt $INFLOWTHREKB ] ; then
echo $time 流量警告,in当前速率$INKB KB/秒 大于$INFLOWTHREKB KB/秒 | mail -s '9.20-5.in kb warning' $MAILTO
fi
if [ $OUTKB -gt $OUTFLOWTHREKB ] ;then
echo $time 流量警告,out当前速率$OUTKB KB/秒大于$INFLOWTHREKB KB/秒 | mail -s '9.20-6.out kb warning' $MAILTO
fi
#fi


sleep 1
#连接数
tcpfile=/tmp/.tcp
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' >$tcpfile
grep TIME_WAIT $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "TIME_WAIT 0 " >> $tcpfile
fi
grep FIN_WAIT1 $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "FIN_WAIT1 0 " >> $tcpfile
fi
grep FIN_WAIT2 $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "FIN_WAIT2 0 " >> $tcpfile
fi
grep CLOSE_WAIT $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "CLOSE_WAIT 0 " >> $tcpfile
fi
grep LAST_ACK $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "LAST_ACK 0 " >> $tcpfile
fi
grep SYN_RECV $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "SYN_RECV 0 " >> $tcpfile
fi
grep CLOSING $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "CLOSING 0 " >> $tcpfile
fi
grep ESTABLISHED $tcpfile > $NULL
if [ $? -eq 1 ] ; then
echo "ESTABLISHED 0 " >> $tcpfile
fi
TIME_WAITV=`grep TIME_WAIT $tcpfile | awk '{print $2}'`
FIN_WAIT1V=`grep FIN_WAIT1 $tcpfile | awk '{print $2}'`
FIN_WAIT2V=`grep FIN_WAIT2 $tcpfile | awk '{print $2}'`
ESTABLISHEDV=`grep ESTABLISHED $tcpfile | awk '{print $2}'`
SYN_RECVV=`grep SYN_RECV $tcpfile | awk '{print $2}'`
CLOSINGV=`grep CLOSING $tcpfile | awk '{print $2}'`
CLOSE_WAITV=`grep CLOSE_WAIT $tcpfile | awk '{print $2}'`
LAST_ACKV=`grep LAST_ACK $tcpfile | awk '{print $2}'`
if [ $ESTABLISHEDV -gt $ESTABLISHED ] ; then
echo $time 连接数警告,当前ESTABLISHED连接数异常,请登录服务器查看。当前连接数为$ESTABLISHEDV个,大于$ESTABLISHED个 | mail -s '9.20-7.ESTABLISHED' $MAILTO
fi
if [ $SYN_RECVV -gt $SYN_RECV ] ; then
echo $time 连接数警告,当前SYN_RECV连接数异常,请登录服务器查看。当前连接数为$SYN_RECVV个,大于$SYN_REC个 | mail -s '9.20-8.SYN_RECV' $MAILTO
fi
if [ $CLOSE_WAITV -gt $CLOSE_WAIT ] ; then
echo $time 连接数警告,当前CLOSE_WAIT连接数异常,请登录服务器查看。当前连接数为$CLOSE_WAITV个,大于$CLOSE_WAIT个 | mail -s '9.20-9.CLOSE_WAIT' $MAILTO
fi
if [ $CLOSINGV -gt $CLOSING ] ; then
echo $time 连接数警告,当前CLOSING连接数异常,请登录服务器查看。当前连接数为$CLOSINGV个,大于$CLOSING个 | mail -s '9.20-10.CLOSING' $MAILTO
fi
if [ $LAST_ACKV -gt $LAST_ACK ] ; then
echo $time 连接数警告,当前LAST_ACK连接数异常,请登录服务器查看。当前连接数为$LAST_ACKV个,大于$LAST_ACK个 | mail -s '9.20-11.LAST_ACK' $MAILTO
fi
if [ $TIME_WAITV -gt $TIME_WAIT ] ; then
echo $time 连接数警告,当前TIME_WAIT连接数异常,请登录服务器查看。当前连接数为$TIME_WAITV个,大于$TIME_WAIT个 | mail -s '9.20-12.TIME_WAIT' $MAILTO
fi
if [ $FIN_WAIT1V -gt $FIN_WAIT1 ] ; then
echo $time 连接数警告,当前FIN_WAIT1连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT1V个,大于$FIN_WAIT1个 | mail -s '9.20-13.FIN_WAIT1' $MAILTO
fi
if [ $FIN_WAIT2V -gt $FIN_WAIT2 ] ; then
echo $time 连接数警告,当前FIN_WAIT2连接数异常,请登录服务器查看。当前连接数为$FIN_WAIT2V个,大于$FIN_WAIT2个 | mail -s '9.20-14.FIN_WAIT2' $MAILTO
fi


sleep 1
#磁盘使用率
DISKF=/tmp/.disk
df -h > $DISKF
BOOTV=`cat $DISKF | grep boot | awk '{print $5}'|awk -F% '{print $1}'`
#HOMEV=`cat $DISKF | grep home | awk '{print $4}'|awk -F% '{print $1}'`
grep VolGroup $DISKF > $NULL


#if [ $? -eq 0 ] ;then
ROOTV=`cat $DISKF | sed -n '3p' |awk '{print $4}'|awk -F% '{print $1}'`
#else
#ROOTV=`cat $DISKF | sed -n '2p'|awk '{print $5}'|awk -F% '{print $1}'`
#fi


if [ $ROOTV -gt $ROOT ] ; then
echo $time 磁盘使用警告,您监控的 / 分区已经大于你设置的数值$ROOT %,详情登陆系统查看,目前使用率为$ROOTV %| mail -s '9.20-15./ warning' $MAILTO
fi
if [ $BOOTV -gt $BOOT ] ; then
echo $time 磁盘使用警告,您监控的 /boot 分区已经大于你设置的数值 $BOOT %,详情登陆系统查看,目前使用率为$BOOTV % | mail -s '9.20-16./boot warning' $MAILTO
fi
#if [ $HOMEV -gt $HOME ] ; then
#echo $time 磁盘使用警告,您监控的 /home 分区已经大于你设置的数值 $HOME %,详情登陆系统查看,目前使用率为$HOMEV % | mail -s '9.20-17./home warning' $MAILTO
#fi
sleep 1
#CPU使用率
CPURATE=`top -b -n 1 |grep Cpu | awk '{print $2}' |awk -F% '{print $1}'`
CB=`expr $CPURATE \> $CPUTHRE`
if [ $CB -eq 1 ] ; then
echo $time 使用警告,您监控的CPU使用率,已经超过您设置的限额$CPUTHRE %,当前CPU使用率为$CPURATE | mail -s '9.20-18.CPU warning' $MAILTO
fi
DBUGS=YES
if [ "$DBUGS" == "$DBUG" ] ; then
echo " "'== 内 存 ==' ;echo \ ;
echo " "当前程序占用内存为 $MEMB % ,总占用内存为 $MEM % ; echo \ ;
echo " "'== 流 量 =='; echo \ ;
YA=`wc -l $INMBF > /dev/null 2>&1 ; echo $?`
if [ $YA -eq 1 ] ; then
echo 0 > $INMBF
fi
IN=`expr $INMB \> $INFLOWTHREMB >$NULL; echo $? ` 2> $NULL
if [ $IN -eq 1 ] ; then
echo " "当前输入流量为 $INMB MB/秒 .;
echo " "当前输入流量为 $INKB KB/秒 .;
fi
YB=`wc -l $OUTMBF > /dev/null 2>&1 ; echo $?`
if [ $YB -eq 1 ] ; then
echo 0 > $OUTMBF
fi
OUT=`expr $OUTMB \> $OUTFLOWTHREMB >$NULL ; echo $?` 2> $NULL
if [ $OUT -eq 1 ] ; then
echo " "当前输出流量为 $OUTMB MB/秒。 ;
echo " "当前输出流量为 $OUTKB KB/秒。 ; echo \ ;
fi
echo " "'== 连接数 ==' ; echo \ ;
echo " "当前TIME_WAIT" " 连接数为 $TIME_WAITV 个。
echo " "当前FIN_WAIT1" " 连接数为 $FIN_WAIT1V 个。
echo " "当前FIN_WAIT2" " 连接数为 $FIN_WAIT2V 个。
echo " "当前CLOSE_WAIT" " 连接数为 $CLOSE_WAITV 个。
echo " "当前ESTABLISHED"" 连接数为 $ESTABLISHEDV 个。
echo " "当前SYN_RECV" " 连接数为 $SYN_RECVV 个。
echo " "当前LAST_ACKV" " 连接数为 $LAST_ACKV 个。
echo " "当前CLOSING" " 连接数为 $CLOSINGV 个。; echo \ ;
echo " "'== CPU使用率 ==' ; echo \ ;
echo " "当前CPU 进程使用率为 $CPURATE . ;echo \ ;
echo " "'== 磁盘使用率 ==' ; echo \ ;
echo " "当前" "/" "分区," "使用率为 $ROOTV %.
echo " "当前 /boot 分区, 使用率为 $BOOTV %.
#echo " "当前 /home 分区, 使用率为 $HOMEV %.
exit
fi
sleep $RUNTIME
done





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
#DESCRIPTION:Resource namespaces pidns01 pidns01 pidns02 pidns02 pidns03 pidns03 pidns04 pidns04 pidns05 pidns05 pidns06 pidns06 pidns10 pidns10 pidns12 pidns12 pidns13 pidns13 pidns16 pidns16 pidns17 pidns17 pidns20 pidns20 pidns30 pidns30 pidns31 pidns31 pidns32 pidns32 mqns_01 mqns_01 mqns_01_clone mqns_01 -m clone mqns_01_unshare mqns_01 -m unshare mqns_02 mqns_02 mqns_02_clone mqns_02 -m clone mqns_02_unshare mqns_02 -m unshare mqns_03 mqns_03 mqns_03_clone mqns_03 -clone mqns_04 mqns_04 mqns_04_clone mqns_04 -clone netns_netlink netns_netlink netns_breakns_ip_ipv4_netlink netns_breakns.sh netns_breakns_ip_ipv6_netlink netns_breakns.sh -6 netns_breakns_ip_ipv4_ioctl netns_breakns.sh -I netns_breakns_ip_ipv6_ioctl netns_breakns.sh -6I netns_breakns_ns_exec_ipv4_netlink netns_breakns.sh -e netns_breakns_ns_exec_ipv6_netlink netns_breakns.sh -6e netns_breakns_ns_exec_ipv4_ioctl netns_breakns.sh -eI netns_breakns_ns_exec_ipv6_ioctl netns_breakns.sh -6eI netns_comm_ip_ipv4_netlink netns_comm.sh netns_comm_ip_ipv6_netlink netns_comm.sh -6 netns_comm_ip_ipv4_ioctl netns_comm.sh -I netns_comm_ip_ipv6_ioctl netns_comm.sh -6I netns_comm_ns_exec_ipv4_netlink netns_comm.sh -e netns_comm_ns_exec_ipv6_netlink netns_comm.sh -6e netns_comm_ns_exec_ipv4_ioctl netns_comm.sh -eI netns_comm_ns_exec_ipv6_ioctl netns_comm.sh -6eI netns_sysfs netns_sysfs.sh shmnstest_none shmnstest -m none shmnstest_clone shmnstest -m clone shmnstest_unshare shmnstest -m unshare shmem_2nstest_none shmem_2nstest -m none shmem_2nstest_clone shmem_2nstest -m clone shmem_2nstest_unshare shmem_2nstest -m unshare shm_comm shm_comm mesgq_nstest_none mesgq_nstest -m none mesgq_nstest_clone mesgq_nstest -m clone mesgq_nstest_unshare mesgq_nstest -m unshare msg_comm msg_comm sem_nstest_none sem_nstest -m none sem_nstest_clone sem_nstest -m clone sem_nstest_unshare sem_nstest -m unshare semtest_2ns_none semtest_2ns -m none semtest_2ns_clone semtest_2ns -m clone semtest_2ns_unshare semtest_2ns -m unshare sem_comm sem_comm utsname01 utsname01 utsname02 utsname02 utsname03_clone utsname03 -m clone utsname03_unshare utsname03 -m unshare utsname04_clone utsname04 -m clone utsname04_unshare utsname04 -m unshare mountns01 mountns01 mountns02 mountns02 mountns03 mountns03 mountns04 mountns04 userns01 userns01 userns02 userns02 userns03 userns03 userns04 userns04 userns05 userns05 userns06 userns06 userns07 userns07 userns08 userns08 # time namespaces sysinfo03 sysinfo03 clock_nanosleep03 clock_nanosleep03 clock_gettime03 clock_gettime03 timens01 timens01 timerfd04 timerfd04
07-20
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值