25 lines
1.1 KiB
Bash
25 lines
1.1 KiB
Bash
|
|
#!/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
|