~ubuntu-branches/ubuntu/trusty/drizzle/trusty

2.1.3 by Monty Taylor
* New upstream release.
1
#!/bin/bash
2
#
3
### BEGIN INIT INFO
4
# Provides:          drizzle
5
# Required-Start:    $network $remote_fs $syslog
6
# Required-Stop:     $network $remote_fs $syslog
7
# Default-Start:     2 3 4 5
8
# Default-Stop:      0 1 6
9
# Short-Description: Start and stop the drizzle database server daemon
10
# Description:       Controls the main Drizzle database server daemon "drizzled"
11
### END INIT INFO
12
#
13
set -e
14
set -u
15
${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
16
17
# Safeguard (relative paths, core dumps..)
18
cd /
19
umask 077
20
21
if [ -r "/lib/lsb/init-functions" ]; then
22
  . /lib/lsb/init-functions
23
else
24
  echo "E: /lib/lsb/init-functions not found, lsb-base (>= 3.0-6) needed"
25
  exit 1
26
fi
27
31 by Dmitrijs Ledkovs
* Merge from debian, remaining changes:
28
if init_is_upstart; then
29
    case "$1" in
30
	stop)
31
	    exit 0
32
	    ;;
33
	*)
34
	    exit 1
35
	    ;;
36
    esac
37
fi	
38
2.1.3 by Monty Taylor
* New upstream release.
39
SELF=$(cd $(dirname $0); pwd -P)/$(basename $0)
40
CONF=/etc/drizzle/drizzled.cnf
41
DRIZZLE=/usr/bin/drizzle
42
DAEMON=/usr/sbin/drizzled
43
DRIZZLE_USER=drizzle
44
LOG_DIR=/var/log/drizzle
45
LOG=${LOG_DIR}/drizzled.log
46
47
test -x ${DAEMON} || exit 0
48
49
[ -f /etc/default/drizzled ] && . /etc/default/drizzled
50
51
# priority can be overriden and "-s" adds output to stderr
52
ERR_LOGGER="logger -p daemon.err -t /etc/init.d/drizzle -i"
53
54
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
55
# Check for the existance of the js plugin
56
JS_OPTS=""
2.1.13 by Tobias Frost
* Add patch always-help.patch
57
[[ -f usr/lib/drizzle/libjs_plugin.so ]] || JS_OPTS="--plugin-remove=js"
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
58
59
2.1.3 by Monty Taylor
* New upstream release.
60
## Fetch a particular option from drizzle's invocation.
61
#
62
# Usage: void drizzled_get_param option
63
drizzled_get_param() {
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
64
	$DAEMON $JS_OPTS --help --user=${DRIZZLE_USER} \
2.1.3 by Monty Taylor
* New upstream release.
65
    | grep "^$1" \
66
    | awk '{print $2}'
67
}
68
# datadir and pidfile are broken at the moment, use the debian defaults here:
69
#PIDFILE=`drizzled_get_param pid-file`
70
#DATADIR=`drizzled_get_param datadir`
71
#[ -z $DATADIR ] && DATADIR=/var/lib/drizzle
72
#[ -z $PIDFILE ] && PIDFILE=$DATADIR/`hostname -s`.pid
73
DATADIR=/var/lib/drizzle
74
PIDFILE=$DATADIR/`hostname -s`.pid
75
76
77
## Checks if there is a server running and if so if it is accessible.
78
#
79
# check_alive insists on a pingable server
80
# check_dead also fails if there is a lost drizzled in the process list
81
#
82
# Usage: boolean drizzled_status [check_alive|check_dead] [warn|nowarn]
83
drizzled_status () {
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
84
    ping_output=`$DRIZZLE $JS_OPTS --ping 2>&1`; ping_alive=$(( ! $? ))
2.1.3 by Monty Taylor
* New upstream release.
85
86
    ps_alive=0
87
    if [ -f "$PIDFILE" ] && ps `cat $PIDFILE` >/dev/null 2>&1; then ps_alive=1; fi
2.1.5 by Tobias Frost
* Libaio-dev is also not available on hurd.
88
2.1.3 by Monty Taylor
* New upstream release.
89
    if [ "$1" = "check_alive"  -a  $ping_alive = 1 ] ||
90
       [ "$1" = "check_dead"   -a  $ping_alive = 0  -a  $ps_alive = 0 ]; then
91
	return 0 # EXIT_SUCCESS
92
    else
93
  	if [ "$2" = "warn" ]; then
94
  	    echo -e "$ps_alive processes alive and '$DRIZZLE --ping' resulted in\n$ping_output\n" | $ERR_LOGGER -p daemon.debug
95
	fi
96
  	return 1 # EXIT_FAILURE
97
    fi
98
}
99
100
# Checks to see if something is already running on the port we want to use
101
check_protocol_port() {
102
    local service=$1
103
104
    port=`drizzled_get_param $1`
105
106
    if [ "x$port" != "x" ] ; then
107
        count=`netstat --listen --numeric-ports | grep \:$port | grep -c . `
108
109
        if [ $count -ne 0 ]; then
110
            log_failure_msg "The selected $service port ($port) seems to be in use by another program "
111
            log_failure_msg "Please select another port to use for $service"
112
            return 1
113
        fi
114
    fi
115
    return 0
116
}
117
118
#
119
# main()
120
#
121
122
case "${1:-''}" in
123
  'start')
124
    [ -e "${DATADIR}" ] || \
125
      install -d -o${DRIZZLE_USER} -g${DRIZZLE_USER} -m750 "${DATADIR}"
2.2.1 by Tobias Frost
* Remove extra space in drizzle.init and prepare /var/run/drizzle
126
    [ -d /var/run/drizzle ] || install -d -o $DRIZZLE_USER -g $DRIZZLE_USER /var/run/drizzle
2.1.3 by Monty Taylor
* New upstream release.
127
    # Start daemon
128
    log_daemon_msg "Starting Drizzle database server" "drizzled"
129
    check_protocol_port mysql-protocol-port || log_end_msg 0
130
    check_protocol_port drizzle-protocol-port || log_end_msg 0
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
131
    if [ -f "$PIDFILE" ] && ps `cat $PIDFILE` >/dev/null 2>&1;
2.2.1 by Tobias Frost
* Remove extra space in drizzle.init and prepare /var/run/drizzle
132
    then
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
133
        log_progress_msg "(already running)"
134
        log_end_msg 0
135
    else
2.2.1 by Tobias Frost
* Remove extra space in drizzle.init and prepare /var/run/drizzle
136
        start_daemon "$DAEMON --chuid $DRIZZLE_USER -m" "--datadir=$DATADIR" "--pid-file=$PIDFILE" "$JS_OPTS" >> $LOG 2>&1 &
2.1.9 by Tobias Frost
Really fix the FTBFS due to dh_sphinxdoc (Closes: #663985)
137
        log_progress_msg "drizzled"
138
        log_end_msg 0
2.2.1 by Tobias Frost
* Remove extra space in drizzle.init and prepare /var/run/drizzle
139
    fi
2.1.3 by Monty Taylor
* New upstream release.
140
  ;;
141
142
  'stop')
143
    log_daemon_msg "Stopping Drizzle database server" "drizzled"
144
    if [ -f "$PIDFILE" ]; then
145
        killproc -p "$PIDFILE" "$DAEMON"
146
        log_progress_msg "drizzled"
147
    fi
148
    log_end_msg 0
149
  ;;
150
151
  'restart'|'force-reload')
152
    set +e; $SELF stop; set -e
2.1.5 by Tobias Frost
* Libaio-dev is also not available on hurd.
153
    $SELF start
2.1.3 by Monty Taylor
* New upstream release.
154
    ;;
155
156
  'status')
157
    if drizzled_status check_alive nowarn; then
158
      log_action_msg "Drizzle is alive."
159
    else
160
      log_action_msg "Drizzle is stopped."
161
      exit 3
162
    fi
163
    ;;
164
165
  *)
166
    echo "Usage: $SELF start|stop|restart|status"
167
    exit 1
168
  ;;
169
170
esac
171