Last active
August 29, 2015 14:17
-
-
Save mshuler/279fabd84cbe2026d310 to your computer and use it in GitHub Desktop.
RPM /etc/init.d/cassandra
This file contains hidden or 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/bash | |
# | |
# /etc/init.d/cassandra | |
# | |
# Startup script for Cassandra | |
# | |
# chkconfig: 2345 20 80 | |
# description: Starts and stops Cassandra | |
. /etc/rc.d/init.d/functions | |
export CASSANDRA_HOME=/usr/share/cassandra | |
export CASSANDRA_CONF=/etc/cassandra/conf | |
export CASSANDRA_INCLUDE=$CASSANDRA_HOME/cassandra.in.sh | |
export CASSANDRA_OWNR=cassandra | |
NAME="cassandra" | |
log_file=/var/log/cassandra/cassandra.log | |
pid_file=/var/run/cassandra/cassandra.pid | |
lock_file=/var/lock/subsys/$NAME | |
CASSANDRA_PROG=/usr/sbin/cassandra | |
# The first existing directory is used for JAVA_HOME if needed. | |
JVM_SEARCH_DIRS="/usr/lib/jvm/jre /usr/lib/jvm/jre-1.7.* /usr/lib/jvm/java-1.7.*/jre" | |
# Read configuration variable file if it is present | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
# If JAVA_HOME has not been set, try to determine it. | |
if [ -z "$JAVA_HOME" ]; then | |
# If java is in PATH, use a JAVA_HOME that corresponds to that. This is | |
# both consistent with how the upstream startup script works, and with | |
# the use of alternatives to set a system JVM (as is done on Debian and | |
# Red Hat derivatives). | |
java="`/usr/bin/which java 2>/dev/null`" | |
if [ -n "$java" ]; then | |
java=`readlink --canonicalize "$java"` | |
JAVA_HOME=`dirname "\`dirname \$java\`"` | |
else | |
# No JAVA_HOME set and no java found in PATH; search for a JVM. | |
for jdir in $JVM_SEARCH_DIRS; do | |
if [ -x "$jdir/bin/java" ]; then | |
JAVA_HOME="$jdir" | |
break | |
fi | |
done | |
# if JAVA_HOME is still empty here, punt. | |
fi | |
fi | |
JAVA="$JAVA_HOME/bin/java" | |
export JAVA_HOME JAVA | |
case "$1" in | |
start) | |
# Cassandra startup | |
echo -n "Starting Cassandra: " | |
su $CASSANDRA_OWNR -c "$CASSANDRA_PROG -p $pid_file" > $log_file 2>&1 | |
retval=$? | |
[ $retval -eq 0 ] && touch $lock_file | |
echo "OK" | |
;; | |
stop) | |
# Cassandra shutdown | |
echo -n "Shutdown Cassandra: " | |
su $CASSANDRA_OWNR -c "kill `cat $pid_file`" | |
retval=$? | |
[ $retval -eq 0 ] && rm -f $lock_file | |
for t in `seq 40`; do $0 status > /dev/null 2>&1 && sleep 0.5 || break; done | |
# Adding a sleep here to give jmx time to wind down (CASSANDRA-4483). Not ideal... | |
# Adam Holmberg suggests this, but that would break if the jmx port is changed | |
# for t in `seq 40`; do netstat -tnlp | grep "0.0.0.0:7199" > /dev/null 2>&1 && sleep 0.1 || break; done | |
sleep 5 | |
STATUS=`$0 status` | |
if [[ $STATUS == "$NAME is stopped" ]]; then | |
echo "OK" | |
else | |
echo "ERROR: could not stop $NAME: $STATUS" | |
exit 1 | |
fi | |
;; | |
reload|restart) | |
$0 stop | |
$0 start | |
;; | |
status) | |
status -p $pid_file cassandra | |
exit $? | |
;; | |
*) | |
echo "Usage: `basename $0` start|stop|status|restart|reload" | |
exit 1 | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment