2015-08-29 2 views
1

Я обращаюсь к своему серверу с помощью ssh через клиента Putty, но когда моя шпаклевка неактивна или я закрываю ее, поиск останавливается. Я хочу держать его все время. Как я могу это достичь?Как сохранить эластичный поиск на сервере linux

+0

Как перезапустить его при повторном входе в систему? – crafter

+0

Когда я снова вхожу в систему, я начинаю искать эластичный поиск .... с командой ./bin/elasticsearch –

ответ

4

Проблема заключается в том, что elasticsearch не запускается в качестве демона (сервера). Вместо этого вы запускаете его, как обычную программу. Поэтому, когда вы останавливаете сеанс SSH, программа перестает работать.

Чтобы начать поиск elasticsearch при перезагрузке сервера, вам необходимо добавить elasticsearch к запуску сервера.

Вы не указали, какую операционную систему вы используете на сервере. Предположим, что это система Debian (например, Ubuntu)), вы должны создать файл, который вы можете поместить в каталог /etc/init.d.

Я скопировал файл с моего сервера ниже. Возможно, у вас уже есть это. Посмотрите на файл /etc/init.d/elasticsearch

$ more /etc/init.d/elasticsearch 

После того, как у вас есть файл, который вы можете запустить команду

sudo update-rc.d elasticsearch defaults 95 10 

Это будет «установить» elasticsearch в качестве службы.

Для запуска и остановки службы, вы можете выполнить команды:

sudo service elasticsearch start 
sudo service elasticsearch stop 

Файл ниже, если у вас нет уже.

#!/bin/sh 
# 
# /etc/init.d/elasticsearch -- startup script for Elasticsearch 
# 
# Written by Miquel van Smoorenburg <[email protected]>. 
# Modified for Debian GNU/Linux by Ian Murdock <[email protected]>. 
# Modified for Tomcat by Stefan Gybas <[email protected]>. 
# Modified for Tomcat6 by Thierry Carrez <[email protected]>. 
# Additional improvements by Jason Brittain <[email protected]>. 
# Modified by Nicolas Huray for Elasticsearch <[email protected]>. 
# 
### BEGIN INIT INFO 
# Provides:   elasticsearch 
# Required-Start: $network $remote_fs $named 
# Required-Stop:  $network $remote_fs $named 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Starts elasticsearch 
# Description:  Starts elasticsearch using start-stop-daemon 
### END INIT INFO 

PATH=/bin:/usr/bin:/sbin:/usr/sbin 
NAME=elasticsearch 
DESC="Elasticsearch Server" 
DEFAULT=/etc/default/$NAME 

if [ `id -u` -ne 0 ]; then 
    echo "You need root privileges to run this script" 
    exit 1 
fi 


. /lib/lsb/init-functions 

if [ -r /etc/default/rcS ]; then 
    . /etc/default/rcS 
fi 


# The following variables can be overwritten in $DEFAULT 

# Run Elasticsearch as this user ID and group ID 
ES_USER=elasticsearch 
ES_GROUP=elasticsearch 

# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not defined in $DEFAULT) 
JDK_DIRS="/usr/lib/jvm/java-8-oracle/ /usr/lib/jvm/j2sdk1.8-oracle/ /usr/lib/jvm/jdk-7-oracle-x64 /usr/lib/jvm/java-7-oracle /usr/lib/jvm/j2sdk1.7-oracle/ /usr/lib/jvm/jav 
a-7-openjdk /usr/lib/jvm/java-7-openjdk-amd64/ /usr/lib/jvm/java-7-openjdk-armhf /usr/lib/jvm/java-7-openjdk-i386/ /usr/lib/jvm/default-java" 

# 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" 
    fi 
done 
export JAVA_HOME 

# Directory where the Elasticsearch binary distribution resides 
ES_HOME=/usr/share/$NAME 

# Heap size defaults to 256m min, 1g max 
# Set ES_HEAP_SIZE to 50% of available RAM, but no more than 31g 
#ES_HEAP_SIZE=2g 

# Heap new generation 
#ES_HEAP_NEWSIZE= 

# max direct memory 
#ES_DIRECT_SIZE= 

# Additional Java OPTS 
#ES_JAVA_OPTS= 

# Maximum number of open files 
MAX_OPEN_FILES=65535 

# Maximum amount of locked memory 
#MAX_LOCKED_MEMORY= 

# Elasticsearch log directory 
LOG_DIR=/var/log/$NAME 

# Elasticsearch data directory 
DATA_DIR=/var/lib/$NAME 

# Elasticsearch work directory 
WORK_DIR=/tmp/$NAME 

# Elasticsearch configuration directory 
CONF_DIR=/etc/$NAME 

# Elasticsearch configuration file (elasticsearch.yml) 
CONF_FILE=$CONF_DIR/elasticsearch.yml 

# Maximum number of VMA (Virtual Memory Areas) a process can own 
MAX_MAP_COUNT=262144 

# End of variables that can be overwritten in $DEFAULT 

# overwrite settings from default file 
if [ -f "$DEFAULT" ]; then 
    . "$DEFAULT" 
fi 

# Define other required variables 
PID_FILE=/var/run/$NAME.pid 
DAEMON=$ES_HOME/bin/elasticsearch 
DAEMON_OPTS="-d -p $PID_FILE --default.config=$CONF_FILE --default.path.home=$ES_HOME --default.path.logs=$LOG_DIR --default.path.data=$DATA_DIR --default.path.work=$WORK_ 
DIR --default.path.conf=$CONF_DIR" 

export ES_HEAP_SIZE 
export ES_HEAP_NEWSIZE 
export ES_DIRECT_SIZE 
export ES_JAVA_OPTS 

# Check DAEMON exists 
test -x $DAEMON || exit 0 

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 
} 

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" 
     exit 1 
    fi 

    log_daemon_msg "Starting $DESC" 

    pid=`pidofproc -p $PID_FILE elasticsearch` 
    if [ -n "$pid" ] ; then 
     log_begin_msg "Already running." 
     log_end_msg 0 
     exit 0 
    fi 

    # 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" 

    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 ]; then 
     sysctl -q -w vm.max_map_count=$MAX_MAP_COUNT 
    fi 

    # Start Daemon 
    start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS 
    return=$? 
    if [ $return -eq 0 ] 
    then 
     i=0 
     timeout=10 
     # Wait for the process to be properly started before exiting 
     until { cat "$PID_FILE" | xargs kill -0; } >/dev/null 2>&1 
     do 
      sleep 1 
      i=$(($i + 1)) 
      [ $i -gt $timeout ] && log_end_msg 1 
     done 
    else 
     log_end_msg $return 
    fi 
    ;;  
    stop) 
    log_daemon_msg "Stopping $DESC" 

    if [ -f "$PID_FILE" ]; then 
     start-stop-daemon --stop --pidfile "$PID_FILE" \ 
      --user "$ES_USER" \ 
      --retry=TERM/20/KILL/5 >/dev/null 
     if [ $? -eq 1 ]; then 
      log_progress_msg "$DESC is not running but pid file exists, cleaning up" 
     elif [ $? -eq 3 ]; then 
      PID="`cat $PID_FILE`" 
      log_failure_msg "Failed to stop $DESC (pid $PID)" 
      exit 1 
     fi 
     rm -f "$PID_FILE" 
    else 
     log_progress_msg "(not running)" 
    fi 
    log_end_msg 0 
    ;; 
    status) 
    status_of_proc -p $PID_FILE elasticsearch elasticsearch && exit 0 || exit $? 
    ;; 
    restart|force-reload) 
    if [ -f "$PID_FILE" ]; then 
     $0 stop 
     sleep 1 
    fi 
    $0 start 
    ;; 
    *) 
    log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}" 
    exit 1 
    ;; 
esac 

exit 0 
+0

Я должен был просто указать на документы: https://www.elastic.co/guide/en/elasticsearch/reference/current /setup-service.html – crafter

+0

Большое спасибо ... это сработало! –

+0

Это замечательно, но не решает проблему, когда ES падает, что может случиться время от времени. –

Смежные вопросы