File elasticsearch.init of Package elasticsearch

#!/bin/sh
# Init script for elasticsearch
# Created by Thomas Neuburger
# Implemented based on SLE11_3 /etc/init.d/skeleton file
#
### BEGIN INIT INFO
# Provides:          elasticsearch
# Required-Start:    $syslog $remote_fs
# Should-Start:      $time ypbind smtp
# Required-Stop:     $syslog $remote_fs
# Should-Stop:       ypbind smtp
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description: Starts Elasticsearch as Daemon
# Description:       Starts Elasticsearch as Daemon. ElasticSearch is a distributed, RESTful, free/open source search server based on Apache Lucene.
### END INIT INFO

# Sets the default values for elasticsearch variables used in this script
ES_USER="elasticsearch"
ES_GROUP="elasticsearch"
ES_HOME="/usr/share/elasticsearch"
LOG_DIR="/var/log/elasticsearch"
DATA_DIR="/var/lib/elasticsearch"
CONF_DIR="/etc/elasticsearch"
PID_DIR="/var/run/elasticsearch"

# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
ELASTICSEARCH_BIN=/usr/share/elasticsearch/bin/elasticsearch
test -x $ELASTICSEARCH_BIN || { echo "$ELASTICSEARCH_BIN not installed"; 
        if [ "$1" = "stop" ]; then exit 0;
        else exit 5; fi; }

# Check for existence of needed config file and read it
ELASTICSEARCH_CONFIG=/etc/sysconfig/elasticsearch
test -r $ELASTICSEARCH_CONFIG || { echo "$ELASTICSEARCH_CONFIG not existing";
        if [ "$1" = "stop" ]; then exit 0;
        else exit 6; fi; }

# Read config        
. $ELASTICSEARCH_CONFIG

# Check for existence of needed environment script
ELASTICSEARCH_ENV=/usr/share/elasticsearch/bin/elasticsearch.env.sh
test -r $ELASTICSEARCH_ENV || { echo "$ELASTICSEARCH_ENV not existing";
        if [ "$1" = "stop" ]; then exit 0;
        else exit 6; fi; }

# Exec environment script	
$ELASTICSEARCH_ENV

name=elasticsearch
pidfile="$PID_DIR/$name.pid"

# Ensure that the PID_DIR exists (it is cleaned at OS startup time)
if [ -n "$PID_DIR" ] && [ ! -e "$PID_DIR" ]; then
    mkdir -p "$PID_DIR" && chown "$ES_USER":"$ES_GROUP" "$PID_DIR"
fi
if [ -n "$pidfile" ] && [ ! -e "$pidfile" ]; then
    touch "$pidfile" && chown "$ES_USER":"$ES_GROUP" "$pidfile"
fi

# Create PID file with correct rights
touch $pidfile
chown ${ES_USER}: $pidfile

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     be verbose in local rc status and clear it afterwards
#      rc_status -v -r  ditto and clear both the local and overall rc status
#      rc_status -s     display "skipped" and exit with status 3
#      rc_status -u     display "unused" and exit with status 3
#      rc_failed        set local and overall rc status to failed
#      rc_failed <num>  set local and overall rc status to <num>
#      rc_reset         clear both the local and overall rc status
#      rc_exit          exit appropriate to overall rc status
#      rc_active        checks whether a service is activated by symlinks
. /etc/rc.status

# Reset status of this service
rc_reset

case "$1" in
    start)
        echo -n "Starting $name "
        if [ -s $pidfile -a -d /proc/$(<$pidfile) ]; then
                echo "pid $(<$pidfile) still running"
                rc_failed
        else
                > $pidfile
                #/bin/su -p -s /bin/bash $ES_USER $ELASTICSEARCH_BIN -p $pidfile -d -Des.default.path.home=$ES_HOME -Des.default.path.logs=$LOG_DIR -Des.default.path.data=$DATA_DIR -Des.default.path.conf=$CONF_DIR &> $LOG_PATH/elasticsearch-init.log &
                /sbin/startproc -u $ES_USER -g $ES_GROUP $ELASTICSEARCH_BIN -p $pidfile -d -Des.default.path.home=$ES_HOME -Des.default.path.logs=$LOG_DIR -Des.default.path.data=$DATA_DIR -Des.default.path.conf=$CONF_DIR
        fi

        # Remember status and be verbose
        rc_status -v
        ;;
    stop)
        echo -n "Shutting down $name "
        pid=$(<$pidfile)
        rm $pidfile 2>/dev/null
        kill -TERM $pid 2>/dev/null

        # Remember status and be verbose
        rc_status -v
        ;;
    restart)
        ## Stop the service and regardless of whether it was
        ## running or not, start it again.
        $0 stop
        $0 start

        # Remember status and be quiet
        rc_status
        ;;
    reload)
        echo -n "Reload $name "
        ## service does not support reload:
        rc_failed 3
        rc_status -v
        ;;
    status)
        echo -n "Checking for $name "
        if ! [ -f $pidfile ]; then
                # not running
                rc_failed 3
        elif [ -s $pidfile -a -d /proc/$(<$pidfile) ]; then
                # running
                :
        else
                # stale pid file
                rc_failed 1
                #rm -f $pidfile
        fi
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status|restart|reload}"
        exit 1
        ;;
esac
rc_exit
openSUSE Build Service is sponsored by