blob: 95f5f73c6706a9f18942a99ba4621803a4f27085 [file] [log] [blame]
Patrick Williamsb48b7b42016-08-17 15:04:38 -05001#!/bin/sh
2#
3# collectd - start and stop the statistics collection daemon
4# http://collectd.org/
5#
6# Copyright (C) 2005-2006 Florian Forster <octo@verplant.org>
7# Copyright (C) 2006-2009 Sebastian Harl <tokkee@debian.org>
8#
9
10### BEGIN INIT INFO
11# Provides: collectd
12# Required-Start: $local_fs $remote_fs
13# Required-Stop: $local_fs $remote_fs
14# Should-Start: $network $named $syslog $time cpufrequtils
15# Should-Stop: $network $named $syslog
16# Default-Start: 2 3 4 5
17# Default-Stop: 0 1 6
18# Short-Description: manage the statistics collection daemon
19# Description: collectd is the statistics collection daemon.
20# It is a small daemon which collects system information
21# periodically and provides mechanisms to monitor and store
22# the values in a variety of ways.
23### END INIT INFO
24
25. /etc/init.d/functions
26
27export PATH=/sbin:/bin:/usr/sbin:/usr/bin
28
29DISABLE=0
30
31NAME=collectd
32DAEMON=/usr/sbin/collectd
33
34CONFIGFILE=/etc/collectd.conf
35PIDFILE=/var/run/collectd.pid
36
37USE_COLLECTDMON=1
38COLLECTDMON_DAEMON=/usr/sbin/collectdmon
39COLLECTDMON_PIDFILE=/var/run/collectdmon.pid
40
41MAXWAIT=30
42
43# Gracefully exit if the package has been removed.
44test -x $DAEMON || exit 0
45
46if [ -r /etc/default/$NAME ]; then
47 . /etc/default/$NAME
48fi
49
50if test "$ENABLE_COREFILES" == 1; then
51 ulimit -c unlimited
52fi
53
54if test "$USE_COLLECTDMON" == 1; then
55 _PIDFILE="$COLLECTDMON_PIDFILE"
56else
57 _PIDFILE="$PIDFILE"
58fi
59
60# return:
61# 0 if config is fine
62# 1 if there is a syntax error
63# 2 if there is no configuration
64check_config() {
65 if test ! -e "$CONFIGFILE"; then
66 return 2
67 fi
68 if ! $DAEMON -t -C "$CONFIGFILE"; then
69 return 1
70 fi
71 return 0
72}
73
74# return:
75# 0 if the daemon has been started
76# 1 if the daemon was already running
77# 2 if the daemon could not be started
78# 3 if the daemon was not supposed to be started
79d_start() {
80 if test "$DISABLE" != 0; then
81 # we get here during restart
82 echo "disabled by /etc/default/$NAME"
83 return 3
84 fi
85
86 if test ! -e "$CONFIGFILE"; then
87 # we get here during restart
88 echo "disabled, no configuration ($CONFIGFILE) found"
89 return 3
90 fi
91
92 check_config
93 rc="$?"
94 if test "$rc" -ne 0; then
95 echo "not starting, configuration error"
96 return 2
97 fi
98
99 if test "$USE_COLLECTDMON" == 1; then
100 start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \
101 --exec $COLLECTDMON_DAEMON -- -P "$_PIDFILE" -- -C "$CONFIGFILE" \
102 || return 2
103 else
104 start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \
105 --exec $DAEMON -- -C "$CONFIGFILE" -P "$_PIDFILE" \
106 || return 2
107 fi
108 return 0
109}
110
111still_running_warning="
112WARNING: $NAME might still be running.
113In large setups it might take some time to write all pending data to
114the disk. You can adjust the waiting time in /etc/default/collectd."
115
116# return:
117# 0 if the daemon has been stopped
118# 1 if the daemon was already stopped
119# 2 if daemon could not be stopped
120d_stop() {
121 PID=$( cat "$_PIDFILE" 2> /dev/null ) || true
122
123 start-stop-daemon --stop --quiet --oknodo --pidfile "$_PIDFILE"
124 rc="$?"
125
126 if test "$rc" -eq 2; then
127 return 2
128 fi
129
130 sleep 1
131 if test -n "$PID" && kill -0 $PID 2> /dev/null; then
132 i=0
133 while kill -0 $PID 2> /dev/null; do
134 i=$(( $i + 2 ))
135 echo -n " ."
136
137 if test $i -gt $MAXWAIT; then
138 echo "$still_running_warning"
139 return 2
140 fi
141
142 sleep 2
143 done
144 return "$rc"
145 fi
146 return "$rc"
147}
148
149# return:
150# 0 if the daemon is running
151# 3 if the daemon is stopped
152d_status(){
153 if test "$USE_COLLECTDMON" == 1; then
154 status $COLLECTDMON_DAEMON
155 else
156 status $DAEMON
157 fi
158}
159
160case "$1" in
161 start)
162 echo -n "Starting $NAME"
163 d_start
164 case "$?" in
165 0|1) echo "." ;;
166 *) exit 1 ;;
167 esac
168 ;;
169 stop)
170 echo -n "Stopping $NAME"
171 d_stop
172 case "$?" in
173 0|1) echo "." ;;
174 *) exit 1 ;;
175 esac
176 ;;
177 status)
178 d_status
179 ;;
180 restart|force-reload)
181 echo -n "Restarting $NAME"
182 check_config
183 rc="$?"
184 if test "$rc" -eq 1; then
185 echo "not restarting, configuration error"
186 exit 1
187 fi
188 d_stop
189 rc="$?"
190 case "$rc" in
191 0|1)
192 sleep 1
193 d_start
194 rc2="$?"
195 case "$rc2" in
196 0|1) echo "." ;;
197 *) exit 1 ;;
198 esac
199 ;;
200 *)
201 exit 1
202 ;;
203 esac
204 ;;
205 *)
206 echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
207 exit 3
208 ;;
209esac
210
211# vim: syntax=sh noexpandtab sw=4 ts=4 :
212