38 lines
606 B
Bash
Executable File
38 lines
606 B
Bash
Executable File
#!/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 EXIT
|
|
|
|
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 |