#!/bin/sh rm -f /tmp/.X99-lock Xvfb :99 -screen 0 1024x768x24 & xvfb_pid=$! export DISPLAY=:99 npm start & app_pid=$! term_handler() { kill "$app_pid" 2>/dev/null || true kill "$xvfb_pid" 2>/dev/null || true } trap term_handler INT TERM while kill -0 "$app_pid" 2>/dev/null; do if ! kill -0 "$xvfb_pid" 2>/dev/null; then echo "Xvfb exited; stopping app." >&2 kill "$app_pid" 2>/dev/null || true wait "$app_pid" 2>/dev/null || true exit 1 fi sleep 1 done wait "$app_pid" app_status=$? kill "$xvfb_pid" 2>/dev/null || true wait "$xvfb_pid" 2>/dev/null || true exit "$app_status"