diff --git a/bin/elasticsearch b/bin/elasticsearch index dc01626f0ed7c..5db2355add02d 100755 --- a/bin/elasticsearch +++ b/bin/elasticsearch @@ -89,7 +89,12 @@ fi if [ -x "$JAVA_HOME/bin/java" ]; then JAVA="$JAVA_HOME/bin/java" else - JAVA=java + 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 @@ -169,7 +174,7 @@ while true; do break ;; *) - echo "Error parsing arguments!" >&2 + echo "Error parsing argument $1!" >&2 exit 1 ;; esac diff --git a/src/deb/control/control b/src/deb/control/control index 43a0a6ff76894..beda08159824d 100644 --- a/src/deb/control/control +++ b/src/deb/control/control @@ -1,9 +1,8 @@ Package: elasticsearch Version: [[version]] Architecture: all -Maintainer: Nicolas Huray +Maintainer: Elasticsearch Team Depends: libc6, adduser -Suggest: java7-runtime-headless | java6-runtime-headless | java7-runtime | java6-runtime Section: web Priority: optional Homepage: http://www.elasticsearch.org/ diff --git a/src/deb/init.d/elasticsearch b/src/deb/init.d/elasticsearch index 7c292114bbcc3..e4b2845269c70 100644 --- a/src/deb/init.d/elasticsearch +++ b/src/deb/init.d/elasticsearch @@ -51,7 +51,7 @@ JDK_DIRS="/usr/lib/jvm/java-7-oracle /usr/lib/jvm/java-7-openjdk /usr/lib/jvm/ja # Look for the right JVM to use for jdir in $JDK_DIRS; do if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then - JAVA_HOME="$jdir" + JAVA_HOME="$jdir" fi done export JAVA_HOME @@ -112,12 +112,24 @@ export ES_JAVA_OPTS # Check DAEMON exists test -x $DAEMON || exit 0 -case "$1" in - start) - if [ -z "$JAVA_HOME" ]; then - log_failure_msg "no JDK found - please set JAVA_HOME" +checkJava() { + set +e + 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 + set -e +} + +case "$1" in + start) + checkJava if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then log_failure_msg "MAX_LOCKED_MEMORY is set - ES_HEAP_SIZE must also be set" @@ -125,11 +137,10 @@ case "$1" in fi log_daemon_msg "Starting $DESC" - - if start-stop-daemon --test --start --pidfile "$PID_FILE" \ - --user "$ES_USER" --exec "$JAVA_HOME/bin/java" \ - >/dev/null; then - + + set +e + start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null + if [ "$?" != "0" ]; then # Prepare environment mkdir -p "$LOG_DIR" "$DATA_DIR" "$WORK_DIR" && chown "$ES_USER":"$ES_GROUP" "$LOG_DIR" "$DATA_DIR" "$WORK_DIR" touch "$PID_FILE" && chown "$ES_USER":"$ES_GROUP" "$PID_FILE" @@ -143,12 +154,11 @@ case "$1" in fi # Start Daemon - start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec /bin/bash -- -c "$DAEMON $DAEMON_OPTS" + start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS sleep 1 - if start-stop-daemon --test --start --pidfile "$PID_FILE" \ - --user "$ES_USER" --exec "$JAVA_HOME/bin/java" \ - >/dev/null; then + start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null + if [ "$?" != "0" ]; then if [ -f "$PID_FILE" ]; then rm -f "$PID_FILE" fi @@ -156,7 +166,6 @@ case "$1" in else log_end_msg 0 fi - else log_progress_msg "(already running)" log_end_msg 0 @@ -186,11 +195,8 @@ case "$1" in ;; status) set +e - start-stop-daemon --test --start --pidfile "$PID_FILE" \ - --user "$ES_USER" --exec "$JAVA_HOME/bin/java" \ - >/dev/null 2>&1 - if [ "$?" = "0" ]; then - + start-stop-daemon --status --pidfile "$PID_FILE" >/dev/null 2>&1 + if [ "$?" != "0" ]; then if [ -f "$PID_FILE" ]; then log_success_msg "$DESC is not running, but pid file exists." exit 1 diff --git a/src/rpm/init.d/elasticsearch b/src/rpm/init.d/elasticsearch index fbeda2280e6c5..b17d075baaa05 100644 --- a/src/rpm/init.d/elasticsearch +++ b/src/rpm/init.d/elasticsearch @@ -49,7 +49,23 @@ if [ -n $USER ] && [ -z $ES_USER ] ; then ES_USER=$USER fi +checkJava() { + set +e + 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 + set -e +} + start() { + checkJava [ -x $exec ] || exit 5 [ -f $CONF_FILE ] || exit 6 if [ -n "$MAX_LOCKED_MEMORY" -a -z "$ES_HEAP_SIZE" ]; then