runMultipleClients.sh
| 1 |
#!/bin/bash |
|---|---|
| 2 |
|
| 3 |
START_TIME=$(date +%s) |
| 4 |
|
| 5 |
NUM_INSTANCES=5 |
| 6 |
TARGET_SCRIPT="./client.sh" |
| 7 |
PIDS=() |
| 8 |
|
| 9 |
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" |
| 10 |
FULL_TARGET_SCRIPT="$SCRIPT_DIR/${TARGET_SCRIPT#./}"
|
| 11 |
|
| 12 |
rm -f TestLog* |
| 13 |
rm -f my-server* |
| 14 |
rm -f *.log |
| 15 |
|
| 16 |
if [ ! -x "$FULL_TARGET_SCRIPT" ]; then |
| 17 |
echo "Error: Target script '$FULL_TARGET_SCRIPT' is not executable." |
| 18 |
echo "Please ensure the file exists and has execute permissions (chmod +x $TARGET_SCRIPT)." |
| 19 |
exit 1 |
| 20 |
fi |
| 21 |
|
| 22 |
echo "Starting $NUM_INSTANCES instances of $TARGET_SCRIPT in the background (no new windows will open)..." |
| 23 |
echo "---" |
| 24 |
|
| 25 |
for i in $(seq 1 $NUM_INSTANCES); do |
| 26 |
$FULL_TARGET_SCRIPT & |
| 27 |
|
| 28 |
PIDS+=($!) |
| 29 |
echo "Launched Worker $i (PID: $!)" |
| 30 |
|
| 31 |
done |
| 32 |
|
| 33 |
echo "---" |
| 34 |
echo "All $NUM_INSTANCES workers launched. Waiting for them to finish..." |
| 35 |
|
| 36 |
for pid in "${PIDS[@]}"; do
|
| 37 |
wait "$pid" |
| 38 |
done |
| 39 |
|
| 40 |
END_TIME=$(date +%s) |
| 41 |
TOTAL_TIME=$((END_TIME - START_TIME)) |
| 42 |
|
| 43 |
H=$((TOTAL_TIME / 3600)) |
| 44 |
R1=$((TOTAL_TIME % 3600)) |
| 45 |
M=$((R1 / 60)) |
| 46 |
S=$((R1 % 60)) |
| 47 |
|
| 48 |
TIME_OUTPUT="" |
| 49 |
|
| 50 |
if [ "$H" -gt 0 ]; then |
| 51 |
TIME_OUTPUT+="${H} hours "
|
| 52 |
fi |
| 53 |
|
| 54 |
if [ "$M" -gt 0 ]; then |
| 55 |
TIME_OUTPUT+="${M} minutes "
|
| 56 |
fi |
| 57 |
|
| 58 |
if [ "$S" -gt 0 ] || ([ "$H" -eq 0 ] && [ "$M" -eq 0 ]); then |
| 59 |
TIME_OUTPUT+="${S} seconds"
|
| 60 |
fi |
| 61 |
|
| 62 |
echo "---" |
| 63 |
echo "All parallel processes have finished." |
| 64 |
echo "Total execution time: ${TIME_OUTPUT}"
|