~upstart-devel/upstart/upstart-jobs

« back to all changes in this revision

Viewing changes to etc/init.d/kgb-bot

  • Committer: Dimitri John Ledkov
  • Date: 2014-05-06 18:45:46 UTC
  • Revision ID: dimitri.ledkov@canonical.com-20140506184546-5toyx56xxrue0f0v
auto update

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#! /bin/sh
2
 
### BEGIN INIT INFO
3
 
# Provides:          kgb-bot
4
 
# Required-Start:    $remote_fs $network
5
 
# Required-Stop:     $remote_fs $network
6
 
# Default-Start:     2 3 4 5
7
 
# Default-Stop:      0 1 6
8
 
# Short-Description: Collaborative IRC helper
9
 
# Description:       KGB is an IRC bot, helping people work together by
10
 
#                    notifying an IRC channel when a commit occures.
11
 
### END INIT INFO
12
 
 
13
 
# Author: Damyan Ivanov <dmn@debian.org>
14
 
 
15
 
# Do NOT "set -e"
16
 
 
17
 
# PATH should only include /usr/* if it runs after the mountnfs.sh script
18
 
PATH=/sbin:/usr/sbin:/bin:/usr/bin
19
 
DESC="Collaborative IRC helper"
20
 
NAME=kgb-bot
21
 
DAEMON=/usr/sbin/$NAME
22
 
DAEMON_ARGS="--config /etc/kgb-bot/kgb.conf"
23
 
PIDFILE=/var/run/kgb-bot/$NAME.pid
24
 
SCRIPTNAME=/etc/init.d/$NAME
25
 
 
26
 
# Exit if the package is not installed
27
 
[ -x "$DAEMON" ] || exit 0
28
 
 
29
 
RUN_AS='Debian-kgb'
30
 
# Read configuration variable file if it is present
31
 
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
32
 
 
33
 
# Load the VERBOSE setting and other rcS variables
34
 
. /lib/init/vars.sh
35
 
 
36
 
# Define LSB log_* functions.
37
 
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
38
 
. /lib/lsb/init-functions
39
 
 
40
 
#
41
 
# create /var/run/kgb-bot and ensure right permissions
42
 
#
43
 
init_run_dir()
44
 
{
45
 
    RUN_DIR="/var/run/$NAME"
46
 
    [ -d "$RUN_DIR" ] || mkdir "$RUN_DIR" || return 1
47
 
 
48
 
    chown "$RUN_AS":root "$RUN_DIR"
49
 
    chmod 0775 "$RUN_DIR"
50
 
 
51
 
    return 0
52
 
}
53
 
 
54
 
#
55
 
# create /var/log/kgb-bot.log and ensure right permissions
56
 
#
57
 
init_log_file() {
58
 
    LOG=/var/log/kgb-bot.log
59
 
 
60
 
    if ! test -e $LOG; then
61
 
        touch $LOG
62
 
        chown "$RUN_AS":root $LOG
63
 
        chmod 0644 $LOG
64
 
    fi
65
 
}
66
 
 
67
 
 
68
 
#
69
 
# Function that starts the daemon/service
70
 
#
71
 
do_start()
72
 
{
73
 
        # Return
74
 
        #   0 if daemon has been started
75
 
        #   1 if daemon was already running
76
 
        #   2 if daemon could not be started
77
 
        init_run_dir || return 2
78
 
        init_log_file || return 2
79
 
        start-stop-daemon --start --quiet --chuid $RUN_AS --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
80
 
                || return 1
81
 
        start-stop-daemon --start --quiet --chuid $RUN_AS --pidfile $PIDFILE --exec $DAEMON -- \
82
 
                $DAEMON_ARGS \
83
 
                || return 2
84
 
        # Add code here, if necessary, that waits for the process to be ready
85
 
        # to handle requests from services started subsequently which depend
86
 
        # on this one.  As a last resort, sleep for some time.
87
 
}
88
 
 
89
 
#
90
 
# Function that stops the daemon/service
91
 
#
92
 
do_stop()
93
 
{
94
 
        # Return
95
 
        #   0 if daemon has been stopped
96
 
        #   1 if daemon was already stopped
97
 
        #   2 if daemon could not be stopped
98
 
        #   other if a failure occurred
99
 
        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
100
 
        RETVAL="$?"
101
 
        [ "$RETVAL" = 2 ] && return 2
102
 
        # Wait for children to finish too if this is a daemon that forks
103
 
        # and if the daemon is only ever run from this initscript.
104
 
        # If the above conditions are not satisfied then add some other code
105
 
        # that waits for the process to drop all resources that could be
106
 
        # needed by services started subsequently.  A last resort is to
107
 
        # sleep for some time.
108
 
        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
109
 
        [ "$?" = 2 ] && return 2
110
 
        # Many daemons don't delete their pidfiles when they exit.
111
 
        rm -f $PIDFILE
112
 
        return "$RETVAL"
113
 
}
114
 
 
115
 
#
116
 
# Function that sends a SIGHUP to the daemon/service
117
 
#
118
 
do_reload() {
119
 
        init_log_file || return 2
120
 
        start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
121
 
        return 0
122
 
}
123
 
 
124
 
#
125
 
# Function that sends a SIGQUIT to the daemon/service
126
 
#
127
 
do_soft_restart() {
128
 
        init_log_file || return 2
129
 
        start-stop-daemon --stop --signal 3 --quiet --pidfile $PIDFILE --name $NAME
130
 
        return 0
131
 
}
132
 
 
133
 
case "$1" in
134
 
  start)
135
 
        [ "$BOT_ENABLED" != "1" ] && \
136
 
                echo $DAEMON disabled in /etc/default/$NAME>&2 && exit 0
137
 
 
138
 
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
139
 
        do_start
140
 
        case "$?" in
141
 
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
142
 
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
143
 
        esac
144
 
        ;;
145
 
  stop)
146
 
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
147
 
        do_stop
148
 
        case "$?" in
149
 
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
150
 
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
151
 
        esac
152
 
        ;;
153
 
  status)
154
 
        status_of_proc -p "$PIDFILE" "$DAEMON" "$NAME" && exit 0 || exit $?
155
 
        ;;
156
 
  soft-restart)
157
 
        log_daemon_msg "Reloading $DESC" "$NAME"
158
 
        do_soft_restart
159
 
        log_end_msg $?
160
 
        ;;
161
 
  reload|force-reload)
162
 
        log_daemon_msg "Reloading $DESC" "$NAME"
163
 
        do_reload
164
 
        log_end_msg $?
165
 
        ;;
166
 
  restart)
167
 
        log_daemon_msg "Restarting $DESC" "$NAME"
168
 
        do_stop
169
 
        case "$?" in
170
 
          0|1)
171
 
                [ "$BOT_ENABLED" != "1" ] && \
172
 
                        echo $DAEMON disabled in /etc/default/$NAME>&2 && exit 0
173
 
                do_start
174
 
                case "$?" in
175
 
                        0) log_end_msg 0 ;;
176
 
                        1) log_end_msg 1 ;; # Old process is still running
177
 
                        *) log_end_msg 1 ;; # Failed to start
178
 
                esac
179
 
                ;;
180
 
          *)
181
 
                # Failed to stop
182
 
                log_end_msg 1
183
 
                ;;
184
 
        esac
185
 
        ;;
186
 
  *)
187
 
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-restart|reload|force-reload}" >&2
188
 
        #echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
189
 
        exit 3
190
 
        ;;
191
 
esac
192
 
 
193
 
: