zoukankan      html  css  js  c++  java
  • 启动多个logstash脚本

    一台服务器上启动多个logstash脚本

    # more logstash_click 
    #!/bin/sh  
    # Init script for logstash  
    # Maintained by Elasticsearch  
    # Generated by pleaserun.  
    # Implemented based on LSB Core 3.1:  
    #   * Sections: 20.2, 20.3  
    #  
    ### BEGIN INIT INFO  
    # Provides:          logstash  
    # Required-Start:    $remote_fs $syslog  
    # Required-Stop:     $remote_fs $syslog  
    # Default-Start:     2 3 4 5  
    # Default-Stop:      0 1 6  
    # Short-Description:  
    # Description:        Starts Logstash as a daemon.  
    ### END INIT INFO  
      
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/logstash/bin
    export PATH  
      
    if [ `id -u` -ne 0 ]; then  
       echo "You need root privileges to run this script"  
       exit 1  
    fi  
     
    # adirname - return absolute dirname of given file
    adirname() { odir=`pwd`; cd `dirname $1`; pwd; cd "${odir}"; }
    MYNAME=`basename "$0"`
    MYDIR=`adirname "$0"`
    LS_LOG_DIR="${MYDIR}/logs"
    LS_DATA_PATH="${MYDIR}/data"
    LS_CONF_DIR="${MYDIR}/conf.d"
     
    name="${MYNAME}"
      
    LS_USER=elasticsearch  
    LS_GROUP=elasticsearch  
    LS_HOME=/usr/local/logstash  
    LS_HEAP_SIZE="256m"  
    #LS_LOG_DIR=/usr/local/logstash/logs 
    LS_LOG_FILE="${LS_LOG_DIR}/$name.log"  
    pidfile="${LS_LOG_DIR}/$name.pid"  
    #LS_CONF_DIR=/usr/local/logstash/conf.d  
    LS_OPEN_FILES=16384  
    LS_NICE=19  
    KILL_ON_STOP_TIMEOUT=${KILL_ON_STOP_TIMEOUT-0} #default value is zero to this variable but could be updated by user request  
    LS_OPTS=""  
      
      
    [ -r /etc/default/$name ] && . /etc/default/$name  
    [ -r /etc/sysconfig/$name ] && . /etc/sysconfig/$name  
      
    program=$LS_HOME/bin/logstash  
    args=" -f ${LS_CONF_DIR} --path.data=${LS_DATA_PATH} -l ${LS_LOG_FILE} ${LS_OPTS}"  
      
    quiet() {  
      "$@" > /dev/null 2>&1  
      return $?  
    }  
      
    start() {  
      
      LS_JAVA_OPTS="${LS_JAVA_OPTS} -Djava.io.tmpdir=${LS_HOME}"  
      HOME=${LS_HOME}  
      export PATH HOME LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING LS_GC_LOG_FILE  
      
      # chown doesn't grab the suplimental groups when setting the user:group - so we have to do it for it.  
      # Boy, I hope we're root here.  
      SGROUPS=$(id -Gn "$LS_USER" | tr " " "," | sed 's/,$//'; echo '')  
      
      if [ ! -z $SGROUPS ]  
      then  
            EXTRA_GROUPS="--groups $SGROUPS"  
      fi  
      
      # set ulimit as (root, presumably) first, before we drop privileges  
      ulimit -n ${LS_OPEN_FILES}  
      
      # Run the program!  
      nice -n ${LS_NICE} chroot --userspec $LS_USER:$LS_GROUP $EXTRA_GROUPS / sh -c "  
        cd $LS_HOME  
        ulimit -n ${LS_OPEN_FILES}  
        $program $args > ${LS_LOG_DIR}/$name.stdout" 2> "${LS_LOG_DIR}/$name.err" &  
      
      # Generate the pidfile from here. If we instead made the forked process  
      # generate it there will be a race condition between the pidfile writing  
      # and a process possibly asking for status.  
      echo $! > $pidfile  
      
      echo "$name started."  
      return 0  
    }  
      
    stop() {  
      # Try a few times to kill TERM the program  
      if status ; then  
        pid=`cat "$pidfile"`  
        echo "Killing $name (pid $pid) with SIGTERM"  
        ps -ef |grep $pid |grep -v 'grep' |awk '{print $2}' | xargs kill -9  
        # Wait for it to exit.  
        for i in 1 2 3 4 5 6 7 8 9 ; do  
          echo "Waiting $name (pid $pid) to die..."  
          status || break  
          sleep 1  
        done  
        if status ; then  
          if [ $KILL_ON_STOP_TIMEOUT -eq 1 ] ; then  
            echo "Timeout reached. Killing $name (pid $pid) with SIGKILL. This may result in data loss."  
            kill -KILL $pid  
            echo "$name killed with SIGKILL."  
          else  
            echo "$name stop failed; still running."  
            return 1 # stop timed out and not forced  
          fi  
        else  
          echo "$name stopped."  
        fi  
      fi  
    }  
      
    status() {  
      if [ -f "$pidfile" ] ; then  
        pid=`cat "$pidfile"`  
        if kill -0 $pid > /dev/null 2> /dev/null ; then  
          # process by this pid is running.  
          # It may not be our pid, but that's what you get with just pidfiles.  
          # TODO(sissel): Check if this process seems to be the same as the one we  
          # expect. It'd be nice to use flock here, but flock uses fork, not exec,  
          # so it makes it quite awkward to use in this case.  
          return 0  
        else  
          return 2 # program is dead but pid file exists  
        fi  
      else  
        return 3 # program is not running  
      fi  
    }  
      
    configtest() {  
      # Check if a config file exists  
      if [ ! "$(ls -A ${LS_CONF_DIR}/* 2> /dev/null)" ]; then  
        echo "There aren't any configuration files in ${LS_CONF_DIR}"  
        return 1  
      fi  
      
      HOME=${LS_HOME}  
      export PATH HOME  
      
      test_args="-t -f ${LS_CONF_DIR} ${LS_OPTS} "  
      $program ${test_args}  
      [ $? -eq 0 ] && return 0  
      # Program not configured  
      return 6  
    }  
      
    case "$1" in  
      start)  
        status  
        code=$?  
        if [ $code -eq 0 ]; then  
          echo "$name is already running"  
        else  
          start  
          code=$?  
        fi  
        exit $code  
        ;;  
      stop) stop ;;  
      force-stop) force_stop ;;  
      status)  
        status  
        code=$?  
        if [ $code -eq 0 ] ; then  
          echo "$name is running"  
        else  
          echo "$name is not running"  
        fi  
        exit $code  
        ;;  
      reload) reload ;;  
      restart)  
        stop && start  
        ;;  
      check)  
        configtest  
        exit $?  
        ;;  
      *)  
        echo "Usage: $SCRIPTNAME {start|stop|status|restart|check}" >&2  
        exit 3  
      ;;  
    esac  
      
    exit $? 
    

      

  • 相关阅读:
    整站爬虫命令
    小故事集锦
    中国最经典广告语大全
    常用的正则表达式
    特殊成员方法
    使用super函数----增量重写普通方法和构造方法
    重写普通方法和构造方法------原类的方法会被覆盖
    Python的数据类型与数据结构
    类和对象
    生产者-消费者问题与quene模块
  • 原文地址:https://www.cnblogs.com/xzlive/p/10571636.html
Copyright © 2011-2022 走看看