-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathinit
executable file
·129 lines (115 loc) · 2.6 KB
/
init
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
#!/bin/bash
NAME=${NAME:-ecagentd}
TWISTD="$(which twistd)"
HOME=${DIR:-$(pwd)}
PID_FILE=${PID_FILE:-"$HOME/twistd.pid"}
TAC=${TAC:-"$HOME/$NAME.tac"}
RETVAL=0
cd ${HOME}
getpid() {
echo `cat $PID_FILE 2>/dev/null`
}
start() {
if [ -f ${PID_FILE} ]; then
PID=$(getpid)
if [ -e /proc/${PID} -a /proc/${PID}/exe ]; then
echo ${NAME} is already running: $PID
exit 0;
else
rm -f ${PID_FILE}
fi
fi
echo -n $"Starting ${NAME}: "
if getent passwd ecmanaged > /dev/null 2>&1; then
$TWISTD --uid $(id -u ecmanaged) --gid $(id -g ecmanaged) -y $TAC 2>/dev/null
else
$TWISTD -y $TAC 2>/dev/null
fi
RETVAL=$?
case "$RETVAL" in
0) echo 'OK' ;;
*) echo 'KO' ;;
esac
}
stop() {
if [ -f ${PID_FILE} ]; then
PID=$(getpid)
if [ -e /proc/${PID} -a /proc/${PID}/exe ]; then
echo -n $"Stopping ${NAME}: "
kill -TERM $PID
RETVAL=$?
# ensure that the agent process has stopped
sleep 2
if [ -e /proc/${PID} -a /proc/${PID}/exe ]; then
kill -9 $PID
RETVAL=$?
fi
case "$RETVAL" in
0) echo 'OK' ;;
*) echo 'OK' ;;
esac
else
echo -n $"removing stale pid file"
rm -f ${PID_FILE}
echo
fi
else
echo -n $"${NAME}: is not running"
echo
fi
}
restart() {
stop
sleep 2
start
}
zombies() {
PID=$(getpid)
for i in $(ps aux | awk '"[Zz]" ~ $8 { printf("%d\n", $2); }'); do
if [ $i -eq ${PID} ]; then
if [ $(ps --pid $PID -o etime= | sed 's/:\|-/ /g;' | awk '{print $4" "$3" "$2" "$1}' | \
awk '{print $1+$2*60+$3*3600+$4*86400}') > 300 ]; then
restart
fi
fi
done
}
status() {
echo -n $"Checking status of ${NAME}: "
PID=$(getpid)
ls -l /proc/$PID/exe > /dev/null 2>&1
case "$?" in
0) zombies; echo 'OK' ;;
*) echo 'KO' ;;
esac
}
check() {
echo -n $"Checking status of ${NAME}: "
PID=$(getpid)
ls -l /proc/$PID/exe > /dev/null 2>&1
case "$?" in
0) zombies; echo 'OK' ;;
*) echo 'KO'; stop; sleep 2; start ;;
esac
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status twistd
;;
check)
check twistd
;;
*)
echo $"Usage: $0 {start|stop|restart|status|check}"
exit 1
esac
exit $RETVAL