Files
box/bin/netvm-reaper.sh
T

28 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Reap stale headless browsers (no CDP activity for >4h)
# Run via cron: */30 * * * * ~/Projects/NetVM/bin/netvm-reaper.sh
for pid in $(pgrep -f "chromium.*--headless" 2>/dev/null); do
# Check if CDP port is still responding (find port from cmdline)
port=$(tr '\0' ' ' < /proc/$pid/cmdline 2>/dev/null | grep -oP 'remote-debugging-port=\K\d+' | head -1)
if [ -n "$port" ]; then
# Try to hit CDP (via netns if needed)
if ! timeout 5 bash -c "cat < /dev/null > /dev/tcp/127.0.0.1/$port" 2>/dev/null; then
echo "reaping dead browser pid $pid (port $port not responding)"
kill -TERM $pid 2>/dev/null
fi
fi
# Check age (kill if >12h old)
age=$(($(date +%s) - $(stat -c %Y /proc/$pid 2>/dev/null || echo 0)))
if [ "$age" -gt 43200 ]; then
echo "reaping old browser pid $pid (age ${age}s)"
kill -TERM $pid 2>/dev/null
fi
done
# Clean up old log files
find /tmp -name "*-smoke.log" -mtime +7 -delete 2>/dev/null
find /tmp -name "otp_*.py" -mtime +1 -delete 2>/dev/null
find /tmp -name "check_*.py" -mtime +1 -delete 2>/dev/null
# Prune unattached stale agent tmux sessions older than 2 hours (7200s)
python3 "$(cd "$(dirname "$0")" && pwd)/muse-tmux.py" prune --ttl 7200 2>/dev/null || true