-
Notifications
You must be signed in to change notification settings - Fork 90
/
mackerel-agent.init
152 lines (140 loc) · 4.08 KB
/
mackerel-agent.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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#!/bin/sh
### BEGIN INIT INFO
# Provides: mackerel-agent
# Short-Description: 'mackerel.io agent'
# Description: 'mackerel.io agent'
# Required-Start: $syslog $network $remote_fs
# Required-Stop: $syslog $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO
NAME=mackerel-agent # Introduce the short server's name here
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DAEMON=${DAEMON:="/usr/bin/$NAME"}
SCRIPTNAME=/etc/init.d/$NAME
LOGFILE=${LOGILE:="/var/log/$NAME.log"}
PIDFILE=${PIDFILE:="/var/run/$NAME.pid"}
ROOT=${ROOT:="/var/lib/$NAME"}
MACKEREL_PLUGIN_WORKDIR=${MACKEREL_PLUGIN_WORKDIR:="/var/tmp/$NAME"}
if [ "$HTTP_PROXY" != "" ]; then
export HTTP_PROXY=$HTTP_PROXY
fi
# Exit if the package is not installed
[ -x $DAEMON ] || exit 0
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
mkdir -m 777 -p $MACKEREL_PLUGIN_WORKDIR
MACKEREL_PLUGIN_WORKDIR=$MACKEREL_PLUGIN_WORKDIR $DAEMON ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --pidfile=$PIDFILE --root=$ROOT $OTHER_OPTS >>$LOGFILE 2>&1 &
sleep 3
kill -0 $(cat $PIDFILE 2>/dev/null) >/dev/null 2>&1
return $?
}
do_configtest()
{
$DAEMON configtest ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --pidfile=$PIDFILE --root=$ROOT $OTHER_OPTS >>$LOGFILE 2>&1
return $?
}
do_retire()
{
$DAEMON retire -force ${APIBASE:+--apibase=$APIBASE} ${APIKEY:+--apikey=$APIKEY} --root=$ROOT $OTHER_OPTS >>$LOGFILE 2>&1
}
#
# Function that stops the daemon/service
#
do_stop()
{
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --exec $DAEMON
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
[ "$?" = 2 ] && return 2
# Many daemons don't delete their pidfiles when they exit.
rm -f $PIDFILE
return "$RETVAL"
}
case "$1" in
start)
log_daemon_msg "Starting $NAME"
do_start
retval=$?
case "$retval" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit $retval ;;
esac
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
do_stop
retval=$?
if [ "$AUTO_RETIREMENT" != "" ] && [ "$AUTO_RETIREMENT" != "0" ]; then
do_retire || retval=$?
fi
case "$retval" in
0|1) log_end_msg 0 ;;
*) log_end_msg 1; exit $retval ;;
esac
;;
status)
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
;;
reload|force-reload)
do_configtest || exit $?
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
retval=$?
case "$retval" in
0|1)
do_start
retval=$?
case "$retval" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit $retval ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1; exit $retval
;;
esac
;;
restart)
log_daemon_msg "Restarting $DESC" "$NAME"
do_stop
retval=$?
case "$retval" in
0|1)
do_start
retval=$?
case "$retval" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit $retval ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1; exit $retval
;;
esac
;;
configtest)
log_daemon_msg "Testing configuration of $NAME"
do_configtest
retval=$?
case "$retval" in
0) log_end_msg 0 ;;
*) log_end_msg 1; exit $retval ;;
esac
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|reload|status|configtest}" >&2
exit 3
;;
esac
: