#!/bin/sh # Function to clean up background processes on script exit cleanup() { echo "[DPS] Cleaning up..." pkill $backend_pid # pkill because subshells pkill $frontend_pid echo "[DPS] Cleaned up..." exit } # Trap SIGINT (Ctrl+C) trap cleanup SIGINT echo "[DPS] trapped" cd ./00-backend ( java -jar target/webshop-0.0.1-SNAPSHOT.jar 2>&1 | tee ../backend_latest.log ) & backend_pid=$! echo "[DPS] Backend started with PID $backend_pid" cd ../01-frontend ( npm start 2>&1 | tee ../frontend_latest.log ) & frontend_pid=$! echo "[DPS] Frontend started with PID $frontend_pid" echo "[DPS] Ctrl+C to stop" # Wait indefinitely; cleanup will handle interruption wait