61 lines
2.4 KiB
Bash
61 lines
2.4 KiB
Bash
# hour_traffic.sh
|
||
#!/bin/bash
|
||
##### 记录每小时的流量 #####
|
||
# crontab 每小时执行
|
||
# 0 * * * * /bin/bash hour_traffic.sh 2>&1 >> err.log
|
||
# 定义日志文件和临时存储文件
|
||
TMP_HOUR="$HOME/traffic/.tmp_hour"
|
||
HOUR_LOG_FILE="$HOME/traffic/hour_traffic.log"
|
||
|
||
# 获取当前的 RX 和 TX 流量(以字节为单位)
|
||
INTERFACE="ens3" # 替换为你需要监控的网络接口
|
||
RX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
|
||
TX_BYTES=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
|
||
TOTAL_BYTES=$((RX_BYTES + TX_BYTES))
|
||
# 判断.tmp_hour是否存在 或 是否为0
|
||
if [ ! -f "$TMP_HOUR" ] || [ "$(cat $TMP_HOUR)" -eq 0 ]; then
|
||
# 如果不存在或为0,则获取当前流量,并写入.tmp_hour文件
|
||
echo $TOTAL_BYTES > $TMP_HOUR
|
||
echo "$(date +%Y%m%d%H) 0" >> $HOUR_LOG_FILE
|
||
else
|
||
# 如果.tmp_hour存在且不为0,则获取.tmp_hour文件中的流量,计算差值,更新.tmp_hour文件,差值写入log文件
|
||
HOUR_BYTES=$(cat $TMP_HOUR)
|
||
HOUR_DIFF=$((TOTAL_BYTES - HOUR_BYTES))
|
||
echo $TOTAL_BYTES > $TMP_HOUR
|
||
echo "$(date +%Y%m%d%H) $HOUR_DIFF" >> $HOUR_LOG_FILE
|
||
fi
|
||
|
||
##############################################
|
||
# day_traffic.sh
|
||
##### 记录每天的流量 #####
|
||
# crontab 每天凌晨0点执行,在执行完hour_traffic.sh后执行
|
||
# 1 0 * * * /bin/bash day_traffic.sh 2>&1 >> err.log
|
||
#!/bin/bash
|
||
# 定义日志文件和临时存储文件
|
||
DAY_LOG_FILE="$HOME/traffic/day_traffic.log"
|
||
TMP_HOUR="$HOME/traffic/.tmp_hour"
|
||
HOUR_LOG_FILE="$HOME/traffic/hour_traffic.log"
|
||
|
||
# 重置临时存储文件
|
||
echo 0 > $TMP_HOUR
|
||
# 累计HOUR_LOG_FILE中的流量
|
||
TOTAL_BYTES=$(awk '{sum+=$2} END {print sum}' $HOUR_LOG_FILE)
|
||
# 写入log文件
|
||
echo "$(date -d 'yesterday' +%Y%m%d) $TOTAL_BYTES" >> $DAY_LOG_FILE
|
||
# 归档HOUR_LOG_FILE
|
||
mv $HOUR_LOG_FILE $HOME/traffic/archive/hour_traffic_$(date -d "yesterday" +%Y%m%d).log
|
||
|
||
##################################################
|
||
# month_traffic.sh
|
||
##### 统计每月的流量 #####
|
||
# crontab 每月x日凌晨0点x执行,在执行完day_traffic.sh后执行
|
||
# 8 0 6 * * /bin/bash month_traffic.sh 2>&1 >> err.log
|
||
#!/bin/bash
|
||
MONTH_LOG_FILE="$HOME/traffic/month_traffic.log"
|
||
DAY_LOG_FILE="$HOME/traffic/day_traffic.log"
|
||
# 统计DAY_LOG_FILE
|
||
TOTAL_BYTES=$(awk '{sum+=$2} END {print sum}' $DAY_LOG_FILE)
|
||
# 写入log文件
|
||
echo "$(date +%Y%m%d) $TOTAL_BYTES" >> $MONTH_LOG_FILE
|
||
# 归档DAY_LOG_FILE
|
||
mv $DAY_LOG_FILE $HOME/traffic/archive/day_traffic_$(date +%Y%m).log |