#!/bin/bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" THREADS=${1:-4} RATE=${2:-100} PIDS=() cleanup() { echo echo "Stopping workers..." for pid in "${PIDS[@]:-}"; do if kill -0 "$pid" 2>/dev/null; then kill "$pid" 2>/dev/null || true fi done wait || true echo "All workers stopped." } trap cleanup SIGINT SIGTERM echo "Starting $THREADS workers with RATE=$RATE each..." for i in $(seq 1 "$THREADS"); do METRIC="thread_$i" echo "→ worker $i ($METRIC)" "$SCRIPT_DIR/worker.sh" "$METRIC" "$RATE" & PIDS+=("$!") done wait