forked from dmwm/deployment
-
Notifications
You must be signed in to change notification settings - Fork 0
/
manage
executable file
·140 lines (121 loc) · 2.81 KB
/
manage
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#!/bin/sh
##H Usage: manage ACTION [SECURITY-STRING]
##H
##H Available actions:
##H help show this help
##H version get current version of the service
##H status show current service's status
##H sysboot start server from crond if not running
##H restart (re)start the service
##H start (re)start the service
##H graceful restart the service gracefully
##H stop stop the service
if [ $(id -un) = cmsweb ]; then
echo "ERROR: please use another account" 1>&2
exit 1
fi
echo_e=-e bsdstart=bsdstart
case $(uname) in Darwin )
md5sum() { md5 -r ${1+"$@"}; }
echo_e= bsdstart=start
;;
esac
ME=$(basename $(dirname $0))
TOP=$(cd $(dirname $0)/../../.. && pwd)
ROOT=$(cd $(dirname $0)/../.. && pwd)
CFGDIR=$(dirname $0)
LOGDIR=$TOP/logs/$ME
STATEDIR=$TOP/state/$ME
DMWMMON_PATTERN="/httpd -f $STATEDIR/server.conf"
COLOR_OK="\\033[0;32m"
COLOR_WARN="\\033[0;31m"
COLOR_NORMAL="\\033[0;39m"
for app in DMWMMON-datasvc; do
. $ROOT/apps/$app/etc/profile.d/init.sh
done
# Start service conditionally on crond restart.
sysboot()
{
if [ $(pgrep -u $(id -u) -f "$DMWMMON_PATTERN" | wc -l) = 0 ]; then
start
fi
}
# Start the service.
start()
{
cd $STATEDIR
echo "starting $ME"
$STATEDIR/etc/httpd restart </dev/null 2>&1
}
# Stop the service.
stop()
{
echo "stopping $ME"
for pat in "$DMWMMON_PATTERN"; do
for PID in $(pgrep -u $(id -u) -f "$pat" | sort -n); do
PSLINE=$(ps -o pid=,$bsdstart=,args= $PID |
perl -n -e 'print join(" ", (split)[0..6])')
[ $(ps h $PID | wc -l) = 0 ] && break
echo "Stopping $PID ($PSLINE):"
kill -INT $PID
sleep 1
kill -9 $PID 2>/dev/null
done
done
}
# Check if the server is running.
status()
{
pid=$(pgrep -u $(id -u) -f "$DMWMMON_PATTERN" | sort -n)
if [ X"$pid" = X ]; then
echo $echo_e "$ME is ${COLOR_WARN}NOT RUNNING${COLOR_NORMAL}."
else
echo $echo_e "$ME is ${COLOR_OK}RUNNING${COLOR_NORMAL}, PID" $pid
fi
}
graceful()
{
echo "restarting $ME gracefully"
$STATEDIR/etc/httpd graceful
}
# Verify the security string.
check()
{
CHECK=$(echo "$1" | md5sum | awk '{print $1}')
if [ $CHECK != 94e261a5a70785552d34a65068819993 ]; then
echo "$0: cannot complete operation, please check documentation." 1>&2
exit 2;
fi
}
# Main routine, perform action requested on command line.
case ${1:-status} in
sysboot )
sysboot
;;
start | restart )
check "$2"
stop
start
;;
status )
status
;;
stop )
check "$2"
stop
;;
graceful )
check "$2"
graceful
;;
help )
perl -ne '/^##H/ && do { s/^##H ?//; print }' < $0
;;
version )
echo "$DMWMMON_WEB_VERSION $DMWMMON_DATASVC_VERSION"
;;
* )
echo "$0: unknown action '$1', please try '$0 help' or documentation." 1>&2
exit 1
;;
esac