2
2
ACTION=$1
3
3
SIGNAL=" "
4
4
5
+ pid=$( ps ax | grep startCluster | grep -v grep | xargs | cut -f1 -d' ' )
6
+ if [ " $pid " == " " ]; then
7
+ echo " No cluster master process found."
8
+ exit
9
+ fi
10
+
11
+ function workers_ps {
12
+ ps_out=$( ps ax | grep -- " actionhero start$" | grep -v grep)
13
+ IFS='
14
+ '
15
+ IFS=${IFS: 0: 1}
16
+ workers=( $ps_out )
17
+ }
18
+
19
+ workers_ps
20
+
21
+ wpids=()
22
+ for worker in " ${workers[@]} "
23
+ do
24
+ wpids+=(" $( echo -e " ${worker} " | xargs | cut -f1 -d' ' ) " )
25
+ done
26
+
27
+
5
28
if [ " $ACTION " == " reload" ]; then
6
29
SIGNAL=" HUP"
7
30
elif [ " $ACTION " == " add" ]; then
8
31
SIGNAL=" TTIN"
9
32
elif [ " $ACTION " == " rm" ]; then
10
33
SIGNAL=" TTOU"
11
- fi
34
+ elif [ " $ACTION " == " kill" ]; then
35
+ for wpid in " ${wpids[@]} "
36
+ do
37
+ kill -9 $wpid # kill the workers and let master restart
38
+ done
39
+ exit
40
+ elif [ " $ACTION " == " recycle" ]; then
41
+ numWorkers=${# wpids[@]}
42
+ echo " Start Recycle, Workers Running: ${# workers[@]} "
43
+
44
+ for wpid in " ${wpids[@]} "
45
+ do
46
+ kill -TTIN $pid # add one
47
+ sleep 1
48
+ done
12
49
13
- if [ " $SIGNAL " == " " ]; then
14
- echo " Usage: workers.sh [reload|add|rm]"
50
+ declare -i sleepTime
51
+ sleepTime=$numWorkers
52
+ sleep $sleepTime
53
+
54
+ workers_ps
55
+ echo " Max Workers Running: ${# workers[@]} "
56
+
57
+ # signal recycle of all
58
+ kill -HUP $pid
59
+
60
+ sleepTime=$numWorkers * 2
61
+ sleep $sleepTime
62
+
63
+ for wpid in " ${wpids[@]} "
64
+ do
65
+ kill -TTOU $pid # remove one
66
+ sleep 1
67
+ done
68
+
69
+ sleepTime=$numWorkers /2
70
+ sleep $sleepTime
71
+
72
+ workers_ps
73
+ echo " End Recycle, Workers Running: ${# workers[@]} "
74
+ exit
75
+ elif [ " $ACTION " == " ls" ]; then
76
+ for worker in " ${workers[@]} "
77
+ do
78
+ echo -e " ${worker} " | xargs | cut -f1,4 -d' '
79
+ done
80
+ echo " Count: ${# wpids[@]} "
81
+ exit
82
+ elif [ " $ACTION " == " count" ]; then
83
+ echo " ${# wpids[@]} "
84
+ exit
15
85
else
16
- pid=$( ps ax | grep startCluster | grep -v grep | xargs | cut -f1 -d' ' )
17
- if [ " $pid " == " " ]; then echo " No cluster master process found."
18
- else
19
- kill -$SIGNAL $pid
20
- echo " Signal $SIGNAL sent to process: $pid "
21
- fi
22
- fi
86
+ echo " Usage: workers.sh [reload|recycle|add|rm|ls|count]"
87
+ exit
88
+ fi
89
+
90
+ kill -$SIGNAL $pid
91
+ echo " Signal $SIGNAL sent to process: $pid "
0 commit comments