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 |