📄 mon.sh
字号:
#!/bin/bash# 是否是测试版V_DEBUG=0# 是否记录日志信息F_DEBUG=0# 监测的网络接口interface=eth1# 重启的时间间隔,秒计START_INTERVAL=5# 监测的时间间隔,秒计INTERVAL=90# 两次检测之间的所接收和传输的包数的最小差值DIFFERENCE=10# 监测和进程名PRGNAME=/tcpwatchwhile true; do /sbin/ifconfig > .if.tmp if [ ! -r .save.tmp ]; then last_in=0; last_out=0; else exec < .save.tmp read last_in read last_out fi exec < .if.tmp while read xx; do ifdevice=`echo $xx | cut -f1 -d' '` if [ "$interface" = "$ifdevice" ]; then read xx; read xx; read rxx; read txx; NowRXtmp=`echo $rxx | cut -f2 -d':'` NowTXtmp=`echo $txx | cut -f2 -d':'` NowRXpackets=`echo $NowRXtmp | cut -f1 -d' '` NowTXpackets=`echo $NowTXtmp | cut -f1 -d' '` echo $NowRXpackets > .save.tmp echo $NowTXpackets >> .save.tmp RXdifference=`expr $NowRXpackets - $last_in` TXdifference=`expr $NowTXpackets - $last_out` if [ "$V_DEBUG" -eq "1" ]; then echo "last in: $last_in, last_out: $last_out" echo "now receive:$NowRXpackets, and send:$NowTXpackets" echo "RX difference:$RXdifference, TX difference:$TXdifference" fi# if [ "$RXdifference" -lt "$DIFFERENCE" ] || \ if [ "$TXdifference" -lt "$DIFFERENCE" ]; then /usr/bin/killall $PRGNAME sleep $START_INTERVAL $PRGNAME if [ "$F_DEBUG" -eq "1" ]; then echo "------------------Program restart----------------" >> /mon.log date >> /mon.log echo "last in: $last_in, last_out: $last_out" >> /mon.log echo "now receive:$NowRXpackets, and send:$NowTXpackets" >> /mon.log echo "RX difference:$RXdifference, TX difference:$TXdifference" >> /mon.log fi fi fi done sleep $INTERVALdone
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -