fix(uno-q): make supervisor survive a reboot + recover actually launch it
A board power-cycle exposed two bugs that left the node dead after boot: - recover-uno-q.sh step 3 ran `pgrep -f zeroclaw-supervisor`, which matches the pgrep's OWN shell (its args contain the supervisor path) — so it always concluded "already running" and never launched the supervisor. Bracket the pattern (`[z]eroclaw-supervisor.sh`) so only the real process matches. - The supervisor's single-instance lock only checked that the locked pid was alive. After a reboot the stale pid can be recycled by an unrelated process, falsely blocking startup. Now require the live pid's /proc/<pid>/cmdline to actually be a supervisor before deferring — otherwise treat the lock as stale. - Also export a full PATH in the supervisor for cron's minimal @reboot env. Validated on hardware: discriminator matches a real supervisor and rejects init's pid; fixed recover detects the running supervisor without spawning a duplicate; board comes back healthy (gateway + llama up). Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6cfce07f77
commit
21fc93556e
@@ -36,7 +36,9 @@ echo " forward :8080 · reverse :$SHIM_PORT"
|
||||
|
||||
echo "==> [3/5] ensure on-board supervisor is running"
|
||||
if a shell "test -x $SUPERVISOR" 2>/dev/null; then
|
||||
a shell "pgrep -f zeroclaw-supervisor >/dev/null 2>&1 \
|
||||
# Bracket the pattern so the pgrep's own shell (whose args contain the
|
||||
# supervisor path) doesn't self-match and skip the launch.
|
||||
a shell "pgrep -f '[z]eroclaw-supervisor.sh' >/dev/null 2>&1 \
|
||||
|| (setsid nohup $SUPERVISOR >/dev/null 2>&1 < /dev/null &)" >/dev/null 2>&1
|
||||
echo " supervisor ensured (restarts llama + daemon on death/wedge)"
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user