| #!/bin/sh |
| # |
| # collectd - start and stop the statistics collection daemon |
| # http://collectd.org/ |
| # |
| # Copyright (C) 2005-2006 Florian Forster <octo@verplant.org> |
| # Copyright (C) 2006-2009 Sebastian Harl <tokkee@debian.org> |
| # |
| |
| ### BEGIN INIT INFO |
| # Provides: collectd |
| # Required-Start: $local_fs $remote_fs |
| # Required-Stop: $local_fs $remote_fs |
| # Should-Start: $network $named $syslog $time cpufrequtils |
| # Should-Stop: $network $named $syslog |
| # Default-Start: 2 3 4 5 |
| # Default-Stop: 0 1 6 |
| # Short-Description: manage the statistics collection daemon |
| # Description: collectd is the statistics collection daemon. |
| # It is a small daemon which collects system information |
| # periodically and provides mechanisms to monitor and store |
| # the values in a variety of ways. |
| ### END INIT INFO |
| |
| . /etc/init.d/functions |
| |
| export PATH=/sbin:/bin:/usr/sbin:/usr/bin |
| |
| DISABLE=0 |
| |
| NAME=collectd |
| DAEMON=/usr/sbin/collectd |
| |
| CONFIGFILE=/etc/collectd.conf |
| PIDFILE=/var/run/collectd.pid |
| |
| USE_COLLECTDMON=1 |
| COLLECTDMON_DAEMON=/usr/sbin/collectdmon |
| COLLECTDMON_PIDFILE=/var/run/collectdmon.pid |
| |
| MAXWAIT=30 |
| |
| # Gracefully exit if the package has been removed. |
| test -x $DAEMON || exit 0 |
| |
| if [ -r /etc/default/$NAME ]; then |
| . /etc/default/$NAME |
| fi |
| |
| if test "$ENABLE_COREFILES" == 1; then |
| ulimit -c unlimited |
| fi |
| |
| if test "$USE_COLLECTDMON" == 1; then |
| _PIDFILE="$COLLECTDMON_PIDFILE" |
| else |
| _PIDFILE="$PIDFILE" |
| fi |
| |
| # return: |
| # 0 if config is fine |
| # 1 if there is a syntax error |
| # 2 if there is no configuration |
| check_config() { |
| if test ! -e "$CONFIGFILE"; then |
| return 2 |
| fi |
| if ! $DAEMON -t -C "$CONFIGFILE"; then |
| return 1 |
| fi |
| return 0 |
| } |
| |
| # return: |
| # 0 if the daemon has been started |
| # 1 if the daemon was already running |
| # 2 if the daemon could not be started |
| # 3 if the daemon was not supposed to be started |
| d_start() { |
| if test "$DISABLE" != 0; then |
| # we get here during restart |
| echo "disabled by /etc/default/$NAME" |
| return 3 |
| fi |
| |
| if test ! -e "$CONFIGFILE"; then |
| # we get here during restart |
| echo "disabled, no configuration ($CONFIGFILE) found" |
| return 3 |
| fi |
| |
| check_config |
| rc="$?" |
| if test "$rc" -ne 0; then |
| echo "not starting, configuration error" |
| return 2 |
| fi |
| |
| if test "$USE_COLLECTDMON" == 1; then |
| start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \ |
| --exec $COLLECTDMON_DAEMON -- -P "$_PIDFILE" -- -C "$CONFIGFILE" \ |
| || return 2 |
| else |
| start-stop-daemon --start --quiet --oknodo --pidfile "$_PIDFILE" \ |
| --exec $DAEMON -- -C "$CONFIGFILE" -P "$_PIDFILE" \ |
| || return 2 |
| fi |
| return 0 |
| } |
| |
| still_running_warning=" |
| WARNING: $NAME might still be running. |
| In large setups it might take some time to write all pending data to |
| the disk. You can adjust the waiting time in /etc/default/collectd." |
| |
| # return: |
| # 0 if the daemon has been stopped |
| # 1 if the daemon was already stopped |
| # 2 if daemon could not be stopped |
| d_stop() { |
| PID=$( cat "$_PIDFILE" 2> /dev/null ) || true |
| |
| start-stop-daemon --stop --quiet --oknodo --pidfile "$_PIDFILE" |
| rc="$?" |
| |
| if test "$rc" -eq 2; then |
| return 2 |
| fi |
| |
| sleep 1 |
| if test -n "$PID" && kill -0 $PID 2> /dev/null; then |
| i=0 |
| while kill -0 $PID 2> /dev/null; do |
| i=$(( $i + 2 )) |
| echo -n " ." |
| |
| if test $i -gt $MAXWAIT; then |
| echo "$still_running_warning" |
| return 2 |
| fi |
| |
| sleep 2 |
| done |
| return "$rc" |
| fi |
| return "$rc" |
| } |
| |
| # return: |
| # 0 if the daemon is running |
| # 3 if the daemon is stopped |
| d_status(){ |
| if test "$USE_COLLECTDMON" == 1; then |
| status $COLLECTDMON_DAEMON |
| else |
| status $DAEMON |
| fi |
| } |
| |
| case "$1" in |
| start) |
| echo -n "Starting $NAME" |
| d_start |
| case "$?" in |
| 0|1) echo "." ;; |
| *) exit 1 ;; |
| esac |
| ;; |
| stop) |
| echo -n "Stopping $NAME" |
| d_stop |
| case "$?" in |
| 0|1) echo "." ;; |
| *) exit 1 ;; |
| esac |
| ;; |
| status) |
| d_status |
| ;; |
| restart|force-reload) |
| echo -n "Restarting $NAME" |
| check_config |
| rc="$?" |
| if test "$rc" -eq 1; then |
| echo "not restarting, configuration error" |
| exit 1 |
| fi |
| d_stop |
| rc="$?" |
| case "$rc" in |
| 0|1) |
| sleep 1 |
| d_start |
| rc2="$?" |
| case "$rc2" in |
| 0|1) echo "." ;; |
| *) exit 1 ;; |
| esac |
| ;; |
| *) |
| exit 1 |
| ;; |
| esac |
| ;; |
| *) |
| echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2 |
| exit 3 |
| ;; |
| esac |
| |
| # vim: syntax=sh noexpandtab sw=4 ts=4 : |
| |