@@ -26,22 +26,27 @@ find $PORTDIR -type f -cmin +$TIMEOUT -exec rm "{}" ";"
26
26
27
27
rm -f ./ports
28
28
29
+ function isFree
30
+ {
31
+ return $( sudo netstat -tulpn | grep LISTEN | awk ' {print $4}' | grep -c ' :' $1 ' $' )
32
+ }
33
+
29
34
case " $1 " in
30
35
31
36
" --cluster" )
32
37
shift
33
- while ! (( set - o noclobber ; date > $PORTDIR / $port && echo "$PORTDIR / $port " > ./ ports && \
34
- date > $PORTDIR /`expr $port + 1 ` && echo "$PORTDIR /`expr $port + 1 `" >> ./ports &&\
35
- date > $PORTDIR /`expr $port + 2 ` && echo "$PORTDIR /`expr $port + 2 `" >> ./ports &&\
36
- date > $PORTDIR /`expr $port + 3 ` && echo "$PORTDIR /`expr $port + 3 `" >> ./ports &&\
37
- date > $PORTDIR /`expr $port + 10 ` && echo "$PORTDIR /`expr $port + 10 `" >> ./ports &&\
38
- date > $PORTDIR /`expr $port + 11 ` && echo "$PORTDIR /`expr $port + 11 `" >> ./ports &&\
39
- date > $PORTDIR /`expr $port + 12 ` && echo "$PORTDIR /`expr $port + 12 `" >> ./ports &&\
40
- date > $PORTDIR /`expr $port + 13 ` && echo "$PORTDIR /`expr $port + 13 `" >> ./ports &&\
41
- date > $PORTDIR /`expr $port + 20 ` && echo "$PORTDIR /`expr $port + 20 `" >> ./ports &&\
42
- date > $PORTDIR /`expr $port + 21 ` && echo "$PORTDIR /`expr $port + 21 `" >> ./ports &&\
43
- date > $PORTDIR /`expr $port + 22 ` && echo "$PORTDIR /`expr $port + 22 `" >> ./ports &&\
44
- date > $PORTDIR /`expr $port + 23 ` && echo "$PORTDIR /`expr $port + 23 `" >> ./ports) 2 > /dev/null)
38
+ while ! (( set - o noclobber ; date > $PORTDIR / $port && isFree $port && echo "$PORTDIR / $port " > ./ ports && \
39
+ date > $PORTDIR /`expr $port + 1 ` && isFree `expr $port + 1 ` && echo "$PORTDIR /`expr $port + 1 `" >> ./ports &&\
40
+ date > $PORTDIR /`expr $port + 2 ` && isFree `expr $port + 2 ` echo "$PORTDIR /`expr $port + 2 `" >> ./ports &&\
41
+ date > $PORTDIR /`expr $port + 3 ` && isFree `expr $port + 3 ` echo "$PORTDIR /`expr $port + 3 `" >> ./ports &&\
42
+ date > $PORTDIR /`expr $port + 10 ` && isFree `expr $port + 10 ` echo "$PORTDIR /`expr $port + 10 `" >> ./ports &&\
43
+ date > $PORTDIR /`expr $port + 11 ` && isFree `expr $port + 11 ` echo "$PORTDIR /`expr $port + 11 `" >> ./ports &&\
44
+ date > $PORTDIR /`expr $port + 12 ` && isFree `expr $port + 12 ` echo "$PORTDIR /`expr $port + 12 `" >> ./ports &&\
45
+ date > $PORTDIR /`expr $port + 13 ` && isFree `expr $port + 13 ` echo "$PORTDIR /`expr $port + 13 `" >> ./ports &&\
46
+ date > $PORTDIR /`expr $port + 20 ` && isFree `expr $port + 20 ` echo "$PORTDIR /`expr $port + 20 `" >> ./ports &&\
47
+ date > $PORTDIR /`expr $port + 21 ` && isFree `expr $port + 21 ` echo "$PORTDIR /`expr $port + 21 `" >> ./ports &&\
48
+ date > $PORTDIR /`expr $port + 22 ` && isFree `expr $port + 22 ` echo "$PORTDIR /`expr $port + 22 `" >> ./ports &&\
49
+ date > $PORTDIR /`expr $port + 23 ` && isFree `expr $port + 23 ` echo "$PORTDIR /`expr $port + 23 `" >> ./ports) 2 > /dev/null)
45
50
do
46
51
[ -e "./ports" ] && while read -r line; do rm -f "$line "; done < ./ports
47
52
rm -f ./ports
@@ -55,15 +60,15 @@ case "$1" in
55
60
56
61
"--activefailover")
57
62
shift
58
- while ! ((set -o noclobber ; date > $PORTDIR /$port && echo "$PORTDIR /$port " > ./ports &&\
59
- date > $PORTDIR /`expr $port + 1 ` && echo "$PORTDIR /`expr $port + 1 `" >> ./ports &&\
60
- date > $PORTDIR /`expr $port + 2 ` && echo "$PORTDIR /`expr $port + 2 `" >> ./ports &&\
61
- date > $PORTDIR /`expr $port + 10 ` && echo "$PORTDIR /`expr $port + 10 `" >> ./ports &&\
62
- date > $PORTDIR /`expr $port + 11 ` && echo "$PORTDIR /`expr $port + 11 `" >> ./ports &&\
63
- date > $PORTDIR /`expr $port + 12 ` && echo "$PORTDIR /`expr $port + 12 `" >> ./ports &&\
64
- date > $PORTDIR /`expr $port + 20 ` && echo "$PORTDIR /`expr $port + 20 `" >> ./ports &&\
65
- date > $PORTDIR /`expr $port + 21 ` && echo "$PORTDIR /`expr $port + 21 `" >> ./ports &&\
66
- date > $PORTDIR /`expr $port + 22 ` && echo "$PORTDIR /`expr $port + 22 `" >> ./ports) 2 > /dev/null)
63
+ while ! ((set -o noclobber ; date > $PORTDIR /$port && isFree $port && echo "$PORTDIR /$port " > ./ports &&\
64
+ date > $PORTDIR /`expr $port + 1 ` && isFree `expr $port + 1 ` && echo "$PORTDIR /`expr $port + 1 `" >> ./ports &&\
65
+ date > $PORTDIR /`expr $port + 2 ` && isFree `expr $port + 2 ` && echo "$PORTDIR /`expr $port + 2 `" >> ./ports &&\
66
+ date > $PORTDIR /`expr $port + 10 ` && isFree `expr $port + 10 ` && echo "$PORTDIR /`expr $port + 10 `" >> ./ports &&\
67
+ date > $PORTDIR /`expr $port + 11 ` && isFree `expr $port + 11 ` && echo "$PORTDIR /`expr $port + 11 `" >> ./ports &&\
68
+ date > $PORTDIR /`expr $port + 12 ` && isFree `expr $port + 12 ` && echo "$PORTDIR /`expr $port + 12 `" >> ./ports &&\
69
+ date > $PORTDIR /`expr $port + 20 ` && isFree `expr $port + 20 ` && echo "$PORTDIR /`expr $port + 20 `" >> ./ports &&\
70
+ date > $PORTDIR /`expr $port + 21 ` && isFree `expr $port + 21 ` && echo "$PORTDIR /`expr $port + 21 `" >> ./ports &&\
71
+ date > $PORTDIR /`expr $port + 22 ` && isFree `expr $port + 22 ` && echo "$PORTDIR /`expr $port + 22 `" >> ./ports) 2 > /dev/null)
67
72
do
68
73
[ -e "./ports" ] && while read -r line; do rm -f "$line "; done < ./ports
69
74
rm -f ./ports
@@ -76,7 +81,7 @@ case "$1" in
76
81
;;
77
82
78
83
"--singleserver")
79
- while ! ((set -o noclobber ; date > $PORTDIR /$port && echo "$PORTDIR /$port " > ./ports &&\
84
+ while ! ((set -o noclobber ; date > $PORTDIR /$port && isFree $port && echo "$PORTDIR /$port " > ./ports &&\
80
85
date > $PORTDIR /`expr $port + 1 ` && echo "$PORTDIR /`expr $port + 1 `" >> ./ports) 2 > /dev/null)
81
86
do
82
87
[ -e "./ports" ] && while read -r line; do rm -f "$line "; done < ./ports
0 commit comments