simbiot-harness/scripts/deferred-restart-harness.sh

40 lines
No EOL
1.8 KiB
Bash
Executable file
Raw 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.

#!/usr/bin/env bash
# Отложенный рестарт main-симбиот-харнеса (typing-активация, e-261002202857).
# Рестарт убивает работающих LLM-воркеров (KillMode=cgroup), поэтому:
# ждём окно -- 15 подряд секунд без живых/зомби-воркеров _llm_worker
# и без свежих (< 15с) result-файлов тиков /tmp/simbiot_tick_*.json
# (свежий файл = только что завершившийся тик, у него хвост-постоб<D0BE>отка).
# Окна нет за дедлайн — выходим БЕЗ рестарта (тик жив, повтор через час).
set -u
DEADLINE=$(( $(date +%s) + 150 ))
is_quiet() {
NOW=$(date +%s)
for p in $(pgrep -f 'harness/_llm_worker.py' 2>/dev/null); do
[ -r "/proc/$p/stat" ] || continue
st=$(awk '{print $3}' "/proc/$p/stat" 2>/dev/null)
[ "$st" = "Z" ] && return 1 # живой или зомби-воркер = тик активен
done
for f in /tmp/simbiot_tick_*.json; do
[ -f "$f" ] || continue
mt=$(stat -c %Y "$f" 2>/dev/null || echo 0)
[ $((NOW - mt)) -lt 15 ] && return 1 # хвост-постоботка только что завершившегося тика
done
return 0
}
CLEAN=0
while [ "$(date +%s)" -lt "$DEADLINE" ]; do
if is_quiet; then
CLEAN=$((CLEAN + 1))
if [ "$CLEAN" -ge 5 ]; then
echo "окно найдено ($(date '+%H:%M:%S')) — рестарт simbiot-harness"
systemctl restart simbiot-harness.service
exit 0
fi
sleep 3
else
CLEAN=0
sleep 10
fi
done
echo "окно не найдено за дедлайн — рестарт прерван (тик работает, повтор через час)"
exit 0