From 4bd62471f76aa4bc8eb34bfdde7579112fc53dd1 Mon Sep 17 00:00:00 2001 From: dotta Date: Wed, 8 Apr 2026 08:29:27 -0500 Subject: [PATCH] kill chrome test servers too --- scripts/kill-dev.sh | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/scripts/kill-dev.sh b/scripts/kill-dev.sh index 9a53498a..b6dec9d8 100755 --- a/scripts/kill-dev.sh +++ b/scripts/kill-dev.sh @@ -24,6 +24,8 @@ node_lines=() pg_pids=() pg_pidfiles=() pg_data_dirs=() +browser_pids=() +browser_lines=() is_pid_running() { local pid="$1" @@ -87,6 +89,14 @@ while IFS= read -r line; do node_lines+=("$line") done < <(ps aux | grep -E '/paperclip(-[^/]+)?/' | grep node | grep -v grep || true) +# --- Agent browser processes (headless Chrome from ~/.agent-browser) --- +while IFS= read -r line; do + [[ -z "$line" ]] && continue + pid=$(echo "$line" | awk '{print $2}') + browser_pids+=("$pid") + browser_lines+=("$line") +done < <(ps aux | grep -E 'agent-browser/browsers/chrome-.*/Google Chrome for Testing' | grep -v grep || true) + candidate_pidfiles=() candidate_pidfiles+=( "$HOME"/.paperclip/instances/*/db/postmaster.pid @@ -107,7 +117,7 @@ for pidfile in "${candidate_pidfiles[@]:-}"; do append_postgres_from_pidfile "$pidfile" done -if [[ ${#node_pids[@]} -eq 0 && ${#pg_pids[@]} -eq 0 ]]; then +if [[ ${#node_pids[@]} -eq 0 && ${#pg_pids[@]} -eq 0 && ${#browser_pids[@]} -eq 0 ]]; then echo "No Paperclip dev processes found." exit 0 fi @@ -144,6 +154,22 @@ if [[ ${#pg_pids[@]} -gt 0 ]]; then echo "" fi +if [[ ${#browser_pids[@]} -gt 0 ]]; then + echo "Found ${#browser_pids[@]} agent browser process(es):" + echo "" + + for i in "${!browser_pids[@]:-}"; do + line="${browser_lines[$i]}" + pid=$(echo "$line" | awk '{print $2}') + start=$(echo "$line" | awk '{print $9}') + cmd=$(echo "$line" | awk '{for(i=11;i<=NF;i++) printf "%s ", $i; print ""}') + cmd=$(echo "$cmd" | sed "s|$HOME/||g") + printf " PID %-7s started %-10s %s\n" "$pid" "$start" "$cmd" + done + + echo "" +fi + if [[ "$DRY_RUN" == true ]]; then echo "Dry run — re-run without --dry to kill these processes." exit 0 @@ -158,6 +184,13 @@ if [[ ${#node_pids[@]} -gt 0 ]]; then sleep 2 fi +if [[ ${#browser_pids[@]} -gt 0 ]]; then + echo "Sending SIGTERM to agent browser processes..." + for pid in "${browser_pids[@]}"; do + kill -TERM "$pid" 2>/dev/null && echo " signaled $pid" || echo " $pid already gone" + done +fi + leftover_pg_pids=() leftover_pg_data_dirs=() for i in "${!pg_pids[@]:-}"; do @@ -203,4 +236,13 @@ if [[ ${#pg_pids[@]} -gt 0 ]]; then done fi +if [[ ${#browser_pids[@]} -gt 0 ]]; then + for pid in "${browser_pids[@]:-}"; do + if kill -0 "$pid" 2>/dev/null; then + echo " agent browser $pid still alive, sending SIGKILL..." + kill -KILL "$pid" 2>/dev/null || true + fi + done +fi + echo "Done."