summaryrefslogtreecommitdiff
path: root/debian/downtimed.init
blob: 146b44276942d8ecba01ec06168c2a0f0c73a2f3 (plain)
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
#!/bin/sh

### BEGIN INIT INFO
# Provides:          downtimed
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: downtime record keeper
# Description:       Downtimed is a daemon which keeps records of
#		     the periods when the operating system has been
#                    out of service.
### END INIT INFO
#
#  Written 2011 by Mats Erik Andersson.
#  Licensed using two-clause FreeBSD statement.
#
###

DESC="downtime bookkeeper"
NAME="downtimed"

DAEMON="/usr/sbin/$NAME"
PIDFILE=/var/run/$NAME.pid

PATH=/sbin:/usr/sbin:/bin:/usr/bin
SCRIPT=/etc/init.d/$NAME

DOWNTIMED_OPTS=""

# Are we making sense?
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Define all LSB log_* functions.
. /lib/lsb/init-functions

# Start downtimed.
do_start()
{
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
			--exec $DAEMON --test > /dev/null \
		|| return 1
	start-stop-daemon --start --quiet --pidfile $PIDFILE \
			--exec $DAEMON -- $DOWNTIMED_OPTS \
		|| return 2

	# Return status:
	#   0    daemon has been started
	#   1    daemon was already running
	#   2    daemon could not be started
}

# Halt downtimed.
do_stop()
{
	start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
			--pidfile $PIDFILE --exec $DAEMON
	RETVAL="$?"
	[ "$RETVAL" = 2 ] && return 2

	rm -f $PIDFILE
	return "$RETVAL"

	# Return status:
	#   0      daemon has been stopped
	#   1      daemon was already stopped
	#   2      daemon could not be stopped
	#   other  daemon reported some other failure
}

# Reloading is a no-do in the standard case, when logging is
# done via the syslog service. Only if $DOWNTIMED_OPTS states
# a separate logging file, then a SIGHUP will result in the
# daemon releasing the file for rotation, or a similar action.

do_reload() {
	start-stop-daemon --stop --signal 1 --quiet \
			--pidfile $PIDFILE --exec $DAEMON
	return 0
}

case "$1" in
  start)
	[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
	do_start
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  stop)
	[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
	do_stop
	case "$?" in
		0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
		2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
	esac
	;;
  status)
	status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
	;;
  reload|force-reload)
	log_daemon_msg "Reloading $DESC" "$NAME"
	do_reload
	log_end_msg $?
	;;
  restart)
	log_daemon_msg "Restarting $DESC" "$NAME"
	do_stop
	case "$?" in
	  0|1)
		do_start
		case "$?" in
			0) log_end_msg 0 ;;
			1) log_end_msg 1 ;; # Still running.
			*) log_end_msg 1 ;; # Failure in starting.
		esac
		;;
	  *)
	  	# Failure in ending service.
		log_end_msg 1
		;;
	esac
	;;
  *)
	echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2
	exit 3
	;;
esac

: