elasticsearch 啟動時,指定jdk的版本
阿新 • • 發佈:2018-12-30
環境
伺服器:centos6
作業系統:win7
工具:CRT
elasticsearch:6.0.0
場景
拿我公司舉例,我公司目前都是使用jdk
1.7,並且線上已經有很多程式在跑啦!所以通過修改環境的方式,肯定是不行,而啟動elasticsearch.6.0
,有需要jdk8
修改啟動指令碼
這種情況下,我們就需要在啟動elasticsearch
時,就需要指定jdk
版本。
即修改elasticsearch
的啟動指令碼(elasticsearch_HOME/bin/elasticsearch
)
[[email protected] elasticsearch-6.0.0]# vim bin/elasticsearch
# 新增以下程式碼
export JAVA_HOME=/home/yutao/jdk1.8.0_121/
export PATH=$JAVA_HOME/bin:$PATH
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/yutao/jdk1.8.0_121/bin/java"
else
JAVA=`which java`
fi
這裡我也給我完整的檔案:
#!/bin/bash
# CONTROLLING STARTUP:
#
# This script relies on a few environment variables to determine startup
# behavior, those variables are:
#
# ES_PATH_CONF -- Path to config directory
# ES_JAVA_OPTS -- External Java Opts on top of the defaults set
#
# Optionally, exact memory values can be set using the `ES_JAVA_OPTS`. Note that
# the Xms and Xmx lines in the JVM options file must be commented out. Example
# values are "512m", and "10g".
#
# ES_JAVA_OPTS="-Xms8g -Xmx8g" ./bin/elasticsearch
# 我新增的 start
export JAVA_HOME=/home/yutao/jdk1.8.0_121/
export PATH=$JAVA_HOME/bin:$PATH
# 我新增的 end
source "`dirname "$0"`"/elasticsearch-env
parse_jvm_options() {
if [ -f "$1" ]; then
echo "`grep "^-" "$1" | tr '\n' ' '`"
fi
}
ES_JVM_OPTIONS="$ES_PATH_CONF"/jvm.options
ES_JAVA_OPTS="`parse_jvm_options "$ES_JVM_OPTIONS"` $ES_JAVA_OPTS"
# 我新增的 start
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/home/yutao/jdk1.8.0_121/bin/java"
else
JAVA=`which java`
fi
# 我新增的 end
# manual parsing to find out, if process should be detached
if ! echo $* | grep -E '(^-d |-d$| -d |--daemonize$|--daemonize )' > /dev/null; then
exec \
"$JAVA" \
$ES_JAVA_OPTS \
-Des.path.home="$ES_HOME" \
-Des.path.conf="$ES_PATH_CONF" \
-cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch \
"[email protected]"
else
exec \
"$JAVA" \
$ES_JAVA_OPTS \
-Des.path.home="$ES_HOME" \
-Des.path.conf="$ES_PATH_CONF" \
-cp "$ES_CLASSPATH" \
org.elasticsearch.bootstrap.Elasticsearch \
"[email protected]" \
<&- &
retval=$?
pid=$!
[ $retval -eq 0 ] || exit $retval
if [ ! -z "$ES_STARTUP_SLEEP_TIME" ]; then
sleep $ES_STARTUP_SLEEP_TIME
fi
if ! ps -p $pid > /dev/null ; then
exit 1
fi
exit 0
fi
exit $?
這樣就修改完畢;
啟動時,不要用root
使用者,被官方禁止啦!會報錯的!
還有我發現,有時修改明明對了,啟動時,還是報:
[[email protected] elasticsearch-6.0.0]# bin/elasticsearch
the minimum required Java version is 8; your Java version from [/usr/java/jdk1.7.0_51/jre] does not meet this requirement
有時又正常啦,不明白!
參考地址: