mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-30 20:08:29 +00:00
Some systems default to a nofile ulimit of 65535. To reduce the pain of deploying Elasticsearch to such systems, this commit lowers the required limit from 65536 to 65535.
179 lines
4.0 KiB
Bash
179 lines
4.0 KiB
Bash
#!/bin/bash
|
|
#
|
|
# elasticsearch <summary>
|
|
#
|
|
# chkconfig: 2345 80 20
|
|
# description: Starts and stops a single elasticsearch instance on this system
|
|
#
|
|
|
|
### BEGIN INIT INFO
|
|
# Provides: Elasticsearch
|
|
# Required-Start: $network $named
|
|
# Required-Stop: $network $named
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: This service manages the elasticsearch daemon
|
|
# Description: Elasticsearch is a very scalable, schema-free and high-performance search solution supporting multi-tenancy and near realtime search.
|
|
### END INIT INFO
|
|
|
|
#
|
|
# init.d / servicectl compatibility (openSUSE)
|
|
#
|
|
if [ -f /etc/rc.status ]; then
|
|
. /etc/rc.status
|
|
rc_reset
|
|
fi
|
|
|
|
#
|
|
# Source function library.
|
|
#
|
|
if [ -f /etc/rc.d/init.d/functions ]; then
|
|
. /etc/rc.d/init.d/functions
|
|
fi
|
|
|
|
# Sets the default values for elasticsearch variables used in this script
|
|
ES_HOME="/usr/share/elasticsearch"
|
|
MAX_OPEN_FILES=65535
|
|
MAX_MAP_COUNT=262144
|
|
ES_PATH_CONF="${path.conf}"
|
|
|
|
PID_DIR="/var/run/elasticsearch"
|
|
|
|
# Source the default env file
|
|
ES_ENV_FILE="${path.env}"
|
|
if [ -f "$ES_ENV_FILE" ]; then
|
|
. "$ES_ENV_FILE"
|
|
fi
|
|
|
|
# ES_USER and ES_GROUP settings were removed
|
|
if [ ! -z "$ES_USER" ] || [ ! -z "$ES_GROUP" ]; then
|
|
echo "ES_USER and ES_GROUP settings are no longer supported. To run as a custom user/group use the archive distribution of Elasticsearch."
|
|
exit 1
|
|
fi
|
|
|
|
exec="$ES_HOME/bin/elasticsearch"
|
|
prog="elasticsearch"
|
|
pidfile="$PID_DIR/${prog}.pid"
|
|
|
|
export ES_JAVA_OPTS
|
|
export JAVA_HOME
|
|
export ES_PATH_CONF
|
|
export ES_STARTUP_SLEEP_TIME
|
|
|
|
lockfile=/var/lock/subsys/$prog
|
|
|
|
if [ ! -x "$exec" ]; then
|
|
echo "The elasticsearch startup script does not exists or it is not executable, tried: $exec"
|
|
exit 1
|
|
fi
|
|
|
|
checkJava() {
|
|
if [ -x "$JAVA_HOME/bin/java" ]; then
|
|
JAVA="$JAVA_HOME/bin/java"
|
|
else
|
|
JAVA=`which java`
|
|
fi
|
|
|
|
if [ ! -x "$JAVA" ]; then
|
|
echo "Could not find any executable java binary. Please install java in your PATH or set JAVA_HOME"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
checkJava
|
|
[ -x $exec ] || exit 5
|
|
|
|
if [ -n "$MAX_OPEN_FILES" ]; then
|
|
ulimit -n $MAX_OPEN_FILES
|
|
fi
|
|
if [ -n "$MAX_LOCKED_MEMORY" ]; then
|
|
ulimit -l $MAX_LOCKED_MEMORY
|
|
fi
|
|
if [ -n "$MAX_MAP_COUNT" -a -f /proc/sys/vm/max_map_count -a "$MAX_MAP_COUNT" -gt $(cat /proc/sys/vm/max_map_count) ]; then
|
|
sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT
|
|
fi
|
|
|
|
# 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 elasticsearch:elasticsearch "$PID_DIR"
|
|
fi
|
|
if [ -n "$pidfile" ] && [ ! -e "$pidfile" ]; then
|
|
touch "$pidfile" && chown elasticsearch:elasticsearch "$pidfile"
|
|
fi
|
|
|
|
cd $ES_HOME
|
|
echo -n $"Starting $prog: "
|
|
# if not running, start it up here, usually something like "daemon $exec"
|
|
daemon --user elasticsearch --pidfile $pidfile $exec -p $pidfile -d
|
|
retval=$?
|
|
echo
|
|
[ $retval -eq 0 ] && touch $lockfile
|
|
return $retval
|
|
}
|
|
|
|
stop() {
|
|
echo -n $"Stopping $prog: "
|
|
# stop it here, often "killproc $prog"
|
|
killproc -p $pidfile -d ${stopping.timeout} $prog
|
|
retval=$?
|
|
echo
|
|
[ $retval -eq 0 ] && rm -f $lockfile
|
|
return $retval
|
|
}
|
|
|
|
restart() {
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload() {
|
|
restart
|
|
}
|
|
|
|
force_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)
|
|
rh_status_q && exit 0
|
|
$1
|
|
;;
|
|
stop)
|
|
rh_status_q || exit 0
|
|
$1
|
|
;;
|
|
restart)
|
|
$1
|
|
;;
|
|
reload)
|
|
rh_status_q || exit 7
|
|
$1
|
|
;;
|
|
force-reload)
|
|
force_reload
|
|
;;
|
|
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 $?
|