Delete diagnose.sh
Browse files- diagnose.sh +0 -154
diagnose.sh
DELETED
|
@@ -1,154 +0,0 @@
|
|
| 1 |
-
#!/bin/sh
|
| 2 |
-
# ================================================================
|
| 3 |
-
# OpenClaw HF Spaces - Startup Diagnostics
|
| 4 |
-
# Runs before everything else. Prints all key info to logs.
|
| 5 |
-
# Non-fatal: never blocks startup.
|
| 6 |
-
# ================================================================
|
| 7 |
-
|
| 8 |
-
TS=$(date -u +"%H:%M:%S")
|
| 9 |
-
echo ""
|
| 10 |
-
echo "=========================================="
|
| 11 |
-
echo "[$TS] [diag] === STARTUP DIAGNOSTICS ==="
|
| 12 |
-
echo "=========================================="
|
| 13 |
-
|
| 14 |
-
# ββ 1. System resources ββββββββββββββββββββββββββββββββββββββ
|
| 15 |
-
echo "[diag] --- System ---"
|
| 16 |
-
echo "[diag] Date : $(date -u)"
|
| 17 |
-
echo "[diag] Hostname : $(hostname 2>/dev/null || echo unknown)"
|
| 18 |
-
echo "[diag] Uptime : $(uptime 2>/dev/null | head -1)"
|
| 19 |
-
|
| 20 |
-
# Memory
|
| 21 |
-
MEM=$(cat /proc/meminfo 2>/dev/null | grep -E "^(MemTotal|MemAvailable|MemFree):" | awk '{printf "%s=%s%s ", $1, $2, $3}')
|
| 22 |
-
echo "[diag] Memory : $MEM"
|
| 23 |
-
|
| 24 |
-
# Disk
|
| 25 |
-
echo "[diag] Disk df :"
|
| 26 |
-
df -h 2>/dev/null | grep -E "^(Filesystem|/dev|overlay|tmpfs|/data)" | while read line; do
|
| 27 |
-
echo "[diag] $line"
|
| 28 |
-
done
|
| 29 |
-
|
| 30 |
-
# ββ 2. /data bucket mount ββββββββββββββββββββββββββββββββββββ
|
| 31 |
-
echo "[diag] --- Storage Bucket /data ---"
|
| 32 |
-
if [ -d /data ]; then
|
| 33 |
-
echo "[diag] /data exists: YES"
|
| 34 |
-
DF_DATA=$(df -h /data 2>/dev/null | tail -1)
|
| 35 |
-
echo "[diag] /data usage : $DF_DATA"
|
| 36 |
-
|
| 37 |
-
# Test write speed with timeout
|
| 38 |
-
WRITE_OK=0
|
| 39 |
-
timeout 5 sh -c 'echo test > /data/.diag-write-test && rm -f /data/.diag-write-test' 2>/dev/null && WRITE_OK=1
|
| 40 |
-
echo "[diag] /data write : $([ $WRITE_OK -eq 1 ] && echo OK || echo FAILED-OR-SLOW)"
|
| 41 |
-
|
| 42 |
-
# List top-level contents and sizes
|
| 43 |
-
echo "[diag] /data contents:"
|
| 44 |
-
ls -lah /data/ 2>/dev/null | while read line; do echo "[diag] $line"; done
|
| 45 |
-
|
| 46 |
-
# openclaw dir
|
| 47 |
-
OC_DIR="/data/.openclaw"
|
| 48 |
-
if [ -d "$OC_DIR" ]; then
|
| 49 |
-
echo "[diag] .openclaw dir size: $(du -sh $OC_DIR 2>/dev/null | cut -f1)"
|
| 50 |
-
ls -lah "$OC_DIR/" 2>/dev/null | while read line; do echo "[diag] $line"; done
|
| 51 |
-
|
| 52 |
-
# Config file details
|
| 53 |
-
CFG="$OC_DIR/openclaw.json"
|
| 54 |
-
if [ -f "$CFG" ]; then
|
| 55 |
-
SIZE=$(stat -c%s "$CFG" 2>/dev/null || echo unknown)
|
| 56 |
-
echo "[diag] openclaw.json : EXISTS, size=${SIZE} bytes"
|
| 57 |
-
# Check if valid JSON (with timeout)
|
| 58 |
-
VALID=$(timeout 3 node -e "try{JSON.parse(require('fs').readFileSync('$CFG','utf-8'));console.log('VALID')}catch(e){console.log('INVALID: '+e.message)}" 2>/dev/null || echo "TIMEOUT/ERROR")
|
| 59 |
-
echo "[diag] openclaw.json : JSON check = $VALID"
|
| 60 |
-
# Show top-level keys
|
| 61 |
-
KEYS=$(timeout 3 node -e "try{var c=JSON.parse(require('fs').readFileSync('$CFG','utf-8'));console.log(Object.keys(c).join(', '))}catch(e){}" 2>/dev/null || echo "")
|
| 62 |
-
echo "[diag] openclaw.json : top-level keys = $KEYS"
|
| 63 |
-
else
|
| 64 |
-
echo "[diag] openclaw.json : NOT FOUND"
|
| 65 |
-
fi
|
| 66 |
-
|
| 67 |
-
# Check for backup/corrupt files
|
| 68 |
-
BACKUPS=$(ls "$OC_DIR"/*.bak "$OC_DIR"/*.corrupt.* "$OC_DIR"/*.empty.* "$OC_DIR"/*.toobig.* 2>/dev/null | wc -l)
|
| 69 |
-
echo "[diag] backup/corrupt files: $BACKUPS"
|
| 70 |
-
|
| 71 |
-
# Workspace size
|
| 72 |
-
WS="$OC_DIR/workspace"
|
| 73 |
-
if [ -d "$WS" ]; then
|
| 74 |
-
echo "[diag] workspace size: $(du -sh $WS 2>/dev/null | cut -f1)"
|
| 75 |
-
fi
|
| 76 |
-
|
| 77 |
-
# Sessions size
|
| 78 |
-
SESS="$OC_DIR/agents"
|
| 79 |
-
if [ -d "$SESS" ]; then
|
| 80 |
-
echo "[diag] agents dir size: $(du -sh $SESS 2>/dev/null | cut -f1)"
|
| 81 |
-
# Count session files
|
| 82 |
-
SESS_COUNT=$(find "$SESS" -name "*.jsonl" 2>/dev/null | wc -l)
|
| 83 |
-
echo "[diag] session files (.jsonl): $SESS_COUNT"
|
| 84 |
-
# Largest session files
|
| 85 |
-
echo "[diag] largest session files:"
|
| 86 |
-
find "$SESS" -name "*.jsonl" -exec ls -s {} \; 2>/dev/null | sort -rn | head -5 | while read line; do
|
| 87 |
-
echo "[diag] $line"
|
| 88 |
-
done
|
| 89 |
-
fi
|
| 90 |
-
else
|
| 91 |
-
echo "[diag] .openclaw dir: NOT FOUND"
|
| 92 |
-
fi
|
| 93 |
-
else
|
| 94 |
-
echo "[diag] /data: NOT MOUNTED"
|
| 95 |
-
fi
|
| 96 |
-
|
| 97 |
-
# ββ 3. Runtime versions ββββββββββββββββββββββββββββββββββββββ
|
| 98 |
-
echo "[diag] --- Runtime ---"
|
| 99 |
-
echo "[diag] Node : $(node --version 2>/dev/null || echo not found)"
|
| 100 |
-
echo "[diag] npm : $(npm --version 2>/dev/null || echo not found)"
|
| 101 |
-
|
| 102 |
-
# openclaw version
|
| 103 |
-
OC_VER=$(node -e "try{var p=require('/app/package.json');console.log(p.version)}catch(e){console.log('unknown')}" 2>/dev/null || echo unknown)
|
| 104 |
-
echo "[diag] openclaw: $OC_VER"
|
| 105 |
-
|
| 106 |
-
# ββ 4. Network βββββββββββββββββββββββββββββββββββββββββββββββ
|
| 107 |
-
echo "[diag] --- Network ---"
|
| 108 |
-
# Check if ports are already in use
|
| 109 |
-
for PORT in 7860 18789; do
|
| 110 |
-
IN_USE=$(nc -z 127.0.0.1 $PORT 2>/dev/null && echo "IN USE" || echo "free")
|
| 111 |
-
echo "[diag] port $PORT : $IN_USE"
|
| 112 |
-
done
|
| 113 |
-
|
| 114 |
-
# Basic outbound connectivity (with timeout)
|
| 115 |
-
CONN=$(timeout 5 sh -c 'curl -s --max-time 4 -o /dev/null -w "%{http_code}" https://api.groq.com 2>/dev/null' || echo "timeout/fail")
|
| 116 |
-
echo "[diag] groq reachable : $CONN"
|
| 117 |
-
|
| 118 |
-
# ββ 5. Processes βββββββββββββββββββββββββββββββββββββββββββββ
|
| 119 |
-
echo "[diag] --- Processes ---"
|
| 120 |
-
echo "[diag] Running processes:"
|
| 121 |
-
ps aux 2>/dev/null | grep -E "(node|openclaw|nginx)" | grep -v grep | while read line; do
|
| 122 |
-
echo "[diag] $line"
|
| 123 |
-
done
|
| 124 |
-
|
| 125 |
-
# ββ 6. Environment summary βββββββββββββββββββββββββββββββββββ
|
| 126 |
-
echo "[diag] --- Environment ---"
|
| 127 |
-
echo "[diag] OPENCLAW_HOME : ${OPENCLAW_HOME:-not set}"
|
| 128 |
-
echo "[diag] SPACE_HOST : ${SPACE_HOST:-not set}"
|
| 129 |
-
echo "[diag] HF_TOKEN set : $([ -n "${HF_TOKEN:-}" ] && echo YES || echo NO)"
|
| 130 |
-
echo "[diag] Gateway token : $([ -n "${OPENCLAW_GATEWAY_TOKEN:-}" ] && echo SET || echo NOT SET)"
|
| 131 |
-
# Count provider keys
|
| 132 |
-
PKEY_COUNT=0
|
| 133 |
-
for VAR in $(env | cut -d= -f1); do
|
| 134 |
-
case "$VAR" in
|
| 135 |
-
*_API_KEY|*_BOT_TOKEN) PKEY_COUNT=$((PKEY_COUNT+1)) ;;
|
| 136 |
-
esac
|
| 137 |
-
done
|
| 138 |
-
echo "[diag] Provider keys : $PKEY_COUNT env vars"
|
| 139 |
-
|
| 140 |
-
# ββ 7. Lock files ββββββββββββββββββββββββββββββββββββββββββββ
|
| 141 |
-
echo "[diag] --- Lock files ---"
|
| 142 |
-
for LOCKDIR in /tmp/openclaw /data/.openclaw /home/user/.openclaw; do
|
| 143 |
-
if [ -d "$LOCKDIR" ]; then
|
| 144 |
-
LOCKS=$(find "$LOCKDIR" -name "*.lock" -o -name ".lock" 2>/dev/null)
|
| 145 |
-
if [ -n "$LOCKS" ]; then
|
| 146 |
-
echo "[diag] LOCKS FOUND in $LOCKDIR:"
|
| 147 |
-
echo "$LOCKS" | while read f; do echo "[diag] $f"; done
|
| 148 |
-
fi
|
| 149 |
-
fi
|
| 150 |
-
done
|
| 151 |
-
|
| 152 |
-
echo "[diag] === DIAGNOSTICS COMPLETE ==="
|
| 153 |
-
echo "=========================================="
|
| 154 |
-
echo ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|