Created
October 12, 2010 19:48
-
-
Save tilgovi/622787 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# | |
# couchdb This is the init script for starting up the CouchDB server | |
# | |
# chkconfig: - 26 74 | |
# description: Starts and stops the CouchDB daemon that handles \ | |
# all database requests. | |
### BEGIN INIT INFO | |
# Provides: couchdb | |
# Required-Start: $local_fs $network | |
# Required-Stop: $local_fs $network | |
# Should-Start: $remote_fs | |
# Should-Stop: $remote_fs | |
# Default-Start: | |
# Default-Stop: 0 1 2 3 4 5 6 | |
# Short-Description: start and stop CouchDB database server | |
# Description: Apache CouchDB is a distributed, fault-tolerant and | |
# schema-free document-oriented database accessible | |
# via a RESTful HTTP/JSON API | |
### END INIT INFO | |
# Source function library. | |
. /etc/rc.d/init.d/functions | |
prog=couchdb | |
exec=/usr/bin/$prog | |
# default values | |
COUCHDB_USER=couchdb | |
COUCHDB_STDOUT_FILE=/dev/null | |
COUCHDB_STDERR_FILE=/dev/null | |
COUCHDB_RESPAWN_TIMEOUT=0 | |
COUCHDB_OPTIONS= | |
# if this script was run from a symlink, follow links until we discover a | |
# corresponding configuration file or get to the end of the link chain | |
fullname=$0 | |
basename=$(basename $fullname) | |
while [ ! -e /etc/sysconfig/$basename -a -L $fullname ] | |
do | |
link=$(readlink $fullname) | |
if [ $(expr $link : "\.") -gt 0 ] | |
then | |
fullname="$(dirname $fullname)/$link" | |
else | |
fullname="$link" | |
fi | |
basename=$(basename $fullname) | |
done | |
[ -e /etc/sysconfig/$basename ] && . /etc/sysconfig/$basename | |
pidfile=/var/run/$prog/$basename.pid | |
lockfile=/var/lock/subsys/$basename | |
start() { | |
[ -x $exec ] || exit 5 | |
echo -n $"Starting $prog: " | |
rh_status_q && echo -n "already running" && warning && echo && exit 0 | |
cd $(eval echo ~$COUCHDB_USER) | |
su $COUCHDB_USER -c "$exec \ | |
-r $COUCHDB_RESPAWN_TIMEOUT \ | |
-o $COUCHDB_STDOUT_FILE \ | |
-e $COUCHDB_STDERR_FILE \ | |
-p $pidfile \ | |
$COUCHDB_OPTIONS -b >/dev/null" | |
retval=$? | |
echo | |
[ $retval -eq 0 ] && touch $lockfile | |
return $retval | |
} | |
stop() { | |
echo -n $"Stopping $prog: " | |
retval=0 | |
if ! rh_status_q ; then | |
echo -n "already stopped" && warning | |
else | |
cd $(eval echo ~$COUCHDB_USER) | |
su $COUCHDB_USER -c "$exec -d -p $pidfile" | |
retval=$? | |
fi | |
echo | |
if [ $retval -eq 0 ]; then | |
STOPTIMEOUT=60 | |
while [ $STOPTIMEOUT -gt 0 ]; do | |
rh_status_q || break | |
sleep 1 | |
let STOPTIMEOUT=${STOPTIMEOUT}-1 | |
done | |
if [ $STOPTIMEOUT -eq 0 ]; then | |
echo "Timeout error occurred trying to stop CouchDB." | |
retval=1 | |
else | |
rm -f $lockfile | |
fi | |
fi | |
return $retval | |
} | |
restart() { | |
stop | |
start | |
} | |
reload() { | |
restart | |
} | |
rh_status() { | |
# run checks to determine if the service is running or use generic status | |
status -p $pidfile $prog | |
} | |
rh_status_q() { | |
rh_status >/dev/null 2>&1 | |
} | |
case "$1" in | |
start) | |
$1 | |
;; | |
stop) | |
$1 | |
;; | |
restart|force-reload) | |
restart | |
;; | |
reload) | |
rh_status_q || exit 7 | |
$1 | |
;; | |
status) | |
rh_status | |
;; | |
condrestart|try-restart) | |
rh_status_q || exit 0 | |
restart | |
;; | |
*) | |
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}" | |
exit 2 | |
esac | |
exit $? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment