#!/bin/bash # Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one # or more contributor license agreements. Licensed under the Elastic License; # you may not use this file except in compliance with the Elastic License. SCRIPT="$0" # SCRIPT may be an arbitrarily deep series of symlinks. Loop until we have the concrete path. while [ -h "$SCRIPT" ] ; do ls=`ls -ld "$SCRIPT"` # Drop everything prior to -> link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then SCRIPT="$link" else SCRIPT=`dirname "$SCRIPT"`/"$link" fi done # determine elasticsearch home ES_HOME=`dirname "$SCRIPT"`/../.. # make ELASTICSEARCH_HOME absolute ES_HOME=`cd "$ES_HOME"; pwd` source "$ES_HOME/bin/elasticsearch.in.sh" 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 if [ -z "$ES_CLASSPATH" ]; then echo "You must set the ES_CLASSPATH var" >&2 exit 1 fi if [ -z "$CONF_DIR" ]; then # Try to read package config files if [ -f "/etc/sysconfig/elasticsearch" ]; then CONF_DIR=/etc/elasticsearch . "/etc/sysconfig/elasticsearch" elif [ -f "/etc/default/elasticsearch" ]; then CONF_DIR=/etc/elasticsearch . "/etc/default/elasticsearch" fi fi # include x-pack jars in classpath ES_CLASSPATH="$ES_CLASSPATH:$ES_HOME/plugins/x-pack/*" # don't let JAVA_TOOL_OPTIONS slip in (e.g. crazy agents in ubuntu) # works around https://bugs.launchpad.net/ubuntu/+source/jayatana/+bug/1441487 if [ "x$JAVA_TOOL_OPTIONS" != "x" ]; then echo "Warning: Ignoring JAVA_TOOL_OPTIONS=$JAVA_TOOL_OPTIONS" echo "Please pass JVM parameters via ES_JAVA_OPTS instead" unset JAVA_TOOL_OPTIONS fi declare -a args=("$@") if [ -e "$CONF_DIR" ]; then args=("${args[@]}" --path.conf "$CONF_DIR") fi cd "$ES_HOME" > /dev/null "$JAVA" $ES_JAVA_OPTS -Des.path.home="$ES_HOME" -cp "$ES_CLASSPATH" org.elasticsearch.common.settings.EncKeyTool $properties "${args[@]}" status=$? cd - > /dev/null exit $status