Project

General

Profile

runMultipleClients.sh

Octavian Adrian Gavril, 10/22/2025 07:27 AM

Download (1.29 KB)

 
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}"