blob: 34aa47f377efe46e5fb27d8c800bcd0f0a3731fe [file] [log] [blame]
#!/bin/sh
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
### BEGIN INIT INFO
# Provides: couchdb
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Apache CouchDB, a RESTful document oriented database
# Description: Apache CouchDB is a distributed, fault-tolerant and schema-free
# document-oriented database accessible via a RESTful HTTP/JSON API. Among other
# features, it provides robust, incremental replication with bi-directional
# conflict detection and resolution, and is queryable and indexable using a
# table-oriented view engine with JavaScript acting as the default view
# definition language.
### END INIT INFO
# Author: CouchDB Developers <dev@couchdb.apache.org>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
. /lib/lsb/init-functions
PID="$(pgrep -u couchdb beam* || true)"
PIDFILE=/var/run/couchdb.pid
NAME="couchdb"
DESC="Apache CouchDB"
DAEMON=/opt/couchdb/bin/couchdb
START_ARGS="--chuid couchdb:couchdb --chdir /opt/couchdb --background"
STOP_ARGS="--pid $PID"
do_usage() {
echo "Usage: couchdb {start|stop|status|restart|try-restart|force-reload}" >&2
}
do_start_cmd() {
start-stop-daemon --start --quiet ${PIDFILE:+--pidfile ${PIDFILE} --make-pidfile} \
$START_ARGS \
--startas $DAEMON --name $NAME --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --start --quiet ${PIDFILE:+--pidfile ${PIDFILE} --make-pidfile} \
$START_ARGS \
--startas $DAEMON --name $NAME --exec $DAEMON -- $DAEMON_ARGS \
|| return 2
}
do_start() {
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
do_start_cmd
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
}
do_stop_cmd() {
RETVAL=2
if [ ! -z "$PID" ]; then
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 \
--pid $PIDFILE
RETVAL="$?"
[ "$RETVAL" = 2 ] && return 2
fi
rm -f ${PIDFILE}
return $RETVAL
}
do_stop() {
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
do_stop_cmd
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
}
do_restart() {
[ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC" "$NAME"
do_stop_cmd
do_start_cmd
case "$?" in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
}
do_force_reload() {
do_restart
}
do_status() {
pgrep -u couchdb beam* > /dev/null && status="$?" || status="$?"
if [ "$status" = 0 ]; then
log_success_msg "$NAME is running"
return 0
elif [ "$status" = 4 ]; then
log_failure_msg "could not access PID file for $NAME"
return $status
else
log_failure_msg "$NAME is not running"
return $status
fi
}
if [ "$DEBUG" = "true" ] ; then
set -x
fi
# Exit if the package is not installed
if [ none != "$DAEMON" ] && [ ! -x "$DAEMON" ] ; then
exit 0
fi
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
status)
do_status
;;
reload)
do_usage
exit 3
;;
force-reload)
do_force_reload
;;
restart)
do_restart
;;
try-restart)
log_daemon_msg "Trying to restart $DESC" "$NAME"
if do_status > /dev/null 2>&1 ; then
do_restart
log_end_msg $?
else
log_progress_msg "is not running."
log_end_msg 1
fi
;;
'')
do_usage
exit 3
;;
esac
exit $?