xtreemfs/etc/init.d/xtreemfs-service.template

162 lines
4.1 KiB
Bash

#!/bin/bash
### BEGIN INIT INFO
# Provides: xtreemfs-@SHORT_SERVICE_NAME_LOWERCASE@
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: @SHOULD_START@
# Should-Stop: $null
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: XtreemFS @SHORT_SERVICE_NAME@
# Description: XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@). http://www.xtreemfs.org/
### END INIT INFO
# Source function library.
if [ -e /lib/lsb/init-functions ]; then
. /lib/lsb/init-functions
else
. /etc/init.d/functions
fi
XTREEMFS_USER=xtreemfs
PID=/var/run/xtreemfs_@SHORT_SERVICE_NAME_LOWERCASE@.pid
CONFIG=/etc/xos/xtreemfs/@SHORT_SERVICE_NAME_LOWERCASE@config.properties
LOG=/var/log/xtreemfs/@SHORT_SERVICE_NAME_LOWERCASE@.log
if [ -z $JAVA_HOME ]; then
export JAVA_HOME=/usr
fi
JAVA_CALL="$JAVA_HOME/bin/java -ea -cp /usr/share/java/XtreemFS.jar:/usr/share/java/BabuDB.jar:/usr/share/java/Flease.jar:/usr/share/java/protobuf-java-2.5.0.jar:/usr/share/java/Foundation.jar:/usr/share/java/jdmkrt.jar:/usr/share/java/jdmktk.jar:/usr/share/java/commons-codec-1.3.jar"
# For SELinux we need to use 'runuser' not 'su'
if [ -x "/sbin/runuser" ]; then
SU="/sbin/runuser"
else
SU="/bin/su"
fi
pre_check() {
exists=`grep -c $XTREEMFS_USER /etc/passwd`
if [ $exists -eq 0 ]; then
echo "User $XTREEMFS_USER does not exist. Create it first."
exit 1
fi
log_directory=`dirname $LOG`
if [ ! -e $log_directory ]; then
echo "Directory for logfiles $log_directory does not exist. Create it first."
exit 1
fi
}
start() {
if [ -f $PID ]; then
PROCPID=`cat $PID`
if [ -e /proc/$PROCPID ];then
echo "XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) already started"
return 0
else
echo -n "Previous XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) was not shutdown correctly (PID $PROCPID). "
fi
fi
pre_check
echo >> $LOG
date >> $LOG
echo -e "Starting XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@)...\n\n" >> $LOG
echo -n "Starting XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@)..."
$SU -s /bin/bash $XTREEMFS_USER -c "$JAVA_CALL org.xtreemfs.@SHORT_SERVICE_NAME_LOWERCASE@.@SHORT_SERVICE_NAME@ $CONFIG" >> $LOG 2>&1 &
PROCPID=$!
echo $PROCPID > $PID
sleep 1s
if [ -e /proc/$PROCPID ]; then
echo "success"
else
echo "failed"
return 1
fi
return 0
}
stop() {
result=0
if [ -f $PID ]; then
echo -n "Stopping XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@)..."
killproc -p $PID $SU
result=$?
if [ $result -eq 0 ]; then
rm -f $PID
echo "success"
else
echo "failed"
fi
else
echo "XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) is not running"
fi
return $result
}
status() {
if [ -f $PID ]; then
PROCPID=`cat $PID`
if [ ! -e /proc/$PROCPID ]; then
echo "XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) has crashed"
return 1
else
echo "XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) is running"
return 0
fi
else
echo "XtreemFS @LONG_SERVICE_NAME@ (@SHORT_SERVICE_NAME@) is not running"
return 3
fi
}
# See how we were called.
case "$1" in
start)
start
result=$?
;;
stop)
stop
result=$?
;;
status)
status
result=$?
;;
reload)
result=0
;;
restart)
stop && sleep 1 && start
result=$?
;;
try-restart)
## Stop the service and if this succeeds (i.e. the
## service was running before), start it again.
$0 status >/dev/null
if [ $? -eq 0 ]; then
$0 restart
result=$?
else
result=0
fi
;;
*)
echo -e "Usage: $0 {start|stop|restart|reload|status|try-restart}\n"
result=1
;;
esac
exit $result