wei/sh/check_heartbeat.txt
2026-06-26 10:10:40 +08:00

58 lines
2.3 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 获取当前小时和分钟
current_hour=$(date +"%H"|sed 's/^0//')
current_minute=$(date +"%M"|sed 's/^0//')
# 转换为24小时制的时间格式
current_time=$((current_hour * 60 + current_minute))
# 设定时间段09:15到14:57的开始和结束时间以分钟计
start_time=$((9*60+15)) # 09:15
end_time=$((14*60+57)) # 14:57
filter_time=$((9*60+35)) # 09:35
#展示strategy_date_*.log的文件路径
strategy_dir=$(find /home/system/app_* -name "strategy_`date '+%Y%m%d'`_*.log" -regextype posix-extended ! -regex '.*/test_log/.*')
# 新增:九点三十五之后过滤 fundflow
if [[ $current_time -ge $filter_time ]]; then
strategy_dir=$(echo "$strategy_dir" | grep -v 'fundflow')
fi
#在9:00-14:57循环判断日志时间和系统时间相差是否超过30s
if [[ $current_time -ge $start_time ]] && [[ $current_time -lt $end_time ]]; then
if [[ -z "${strategy_dir}" ]]; then
echo 0 #心跳正常
else
array_error=()
for dir_path in ${strategy_dir}; do
time_heart=$(# 取最后1000行直接匹配最后一个时间 time 或 timestamp 字段并提取日期时间
tail -n 1000 ${dir_path} | grep -E '"time"|"timestamp"' | tail -2 | head -1 | sed -E '
# 格式1: "time": "2025-12-12 14:56:25:010" -> 2025-12-12 14:56:25
s/.*"time"[[:space:]]*:[[:space:]]*"([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}:[0-9]{2}):[0-9]+".*/\1 \2/p
# 格式2: "timestamp": "12/12/2025, 14:56:26" -> 2025-12-12 14:56:26
s/.*"timestamp"[[:space:]]*:[[:space:]]*"([0-9]{2})\/([0-9]{2})\/([0-9]{4}), ([0-9]{2}:[0-9]{2}:[0-9]{2})".*/\3-\1-\2 \4/p
' -n)
ct=$(date +%s)
lt=$(date -d "${time_heart}" +%s)
minus=$((${ct} - ${lt}))
if [[ -z "${time_heart}" ]]; then
continue
else
if [[ ${minus} -ge 180 ]]; then
array_error+=(${dir_path})
fi
fi
done
if [[ ${#array_error[@]} -gt 0 ]]; then
echo ${array_error[@]} #列出数组的所有元素
else
echo 0 #心跳正常
fi
fi
else
echo 0 #心跳正常
fi