-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathheartbeat.sh
More file actions
35 lines (28 loc) · 1.5 KB
/
heartbeat.sh
File metadata and controls
35 lines (28 loc) · 1.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/bash
# Heartbeat Script - System Status & Alive Signal
# 心跳脚本 - 上报系统状态与存活信号
# 作用:向 OpenClaw 发送存活信号,并附带基础系统指标,辅助 Agent 进行自我诊断。
# 1. 定义工作区路径 (使用绝对路径,符合你的 Power User 偏好)
WORKSPACE_DIR="/home/eisenbot/.openclaw/workspace"
LOG_FILE="$WORKSPACE_DIR/openclaw_heartbeat.log"
# 2. 获取当前时间戳
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
# 3. 获取系统关键指标 (为 HEARTBEAT.md 中的"Self-Healing Check"提供即时数据)
# Load: 系统负载 (1分钟平均值)
SYS_LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d, -f1 | xargs)
# Disk: 根目录磁盘使用率
DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}')
# Mem: 内存使用百分比
MEM_USAGE=$(free -m | awk 'NR==2{printf "%.1f%%", $3*100/$2 }')
# 4. 构建心跳消息 (包含上下文信息)
# 格式: [时间] 💗 Heartbeat: 状态 (负载, 内存, 磁盘)
HEARTBEAT_MSG="[$TIMESTAMP] 💗 Heartbeat: Alive | Load: $SYS_LOAD | Mem: $MEM_USAGE | Disk: $DISK_USAGE"
# 5. 发送信号 (OpenClaw 主程序会捕获此标准输出 stdout)
echo "$HEARTBEAT_MSG"
# 6. 写入日志文件 (用于长期回溯和调试)
echo "$HEARTBEAT_MSG" >> "$LOG_FILE"
# 7. [自动维护] 简单日志轮转
# 如果日志超过 5MB (5242880 bytes),则重置,防止占满服务器空间
if [ -f "$LOG_FILE" ] && [ $(stat -c%s "$LOG_FILE") -ge 5242880 ]; then
echo "[$TIMESTAMP] ⚠️ Log rotated due to size limit." > "$LOG_FILE"
fi