• logstash服务启动脚本


    vi /etc/init.d/logstash
    #!/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
    export PATH
    
    if [ `id -u` -ne 0 ]; then
    echo "You need root privileges to run this script"
    exit 1
    fi
    
    name=logstash
    pidfile="/var/run/$name.pid"
    
    LS_USER=logstash
    LS_GROUP=logstash
    LS_HOME=/var/lib/logstash
    LS_HEAP_SIZE="500m"
    LS_LOG_DIR=/var/log/logstash
    LS_LOG_FILE="${LS_LOG_DIR}/$name.log"
    LS_CONF_DIR=/etc/logstash/conf.d
    LS_OPEN_FILES=16384
    LS_NICE=19
    LS_OPTS=""
    
    
    [ -r /etc/default/$name ] && . /etc/default/$name
    [ -r /etc/sysconfig/$name ] && . /etc/sysconfig/$name
    
    program=/opt/logstash/bin/logstash
    args="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}"
    
    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
    
    # 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}
    exec "$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"
    kill -TERM $pid
    # Wait for it to exit.
    for i in 1 2 3 4 5 ; 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."
    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
    }
    
    force_stop() {
    if status ; then
    stop
    status && kill -KILL `cat "$pidfile"`
    fi
    }
    
    
    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
    ;;
    restart)
    
    stop && start
    ;;
    *)
    echo "Usage: $SCRIPTNAME {start|stop|force-stop|status|restart}" >&2
    exit 3
    ;;
    esac
    
    exit $?
    
    
    chmod +x /etc/init.d/logstash
    

    设置开机启动

    chkconfig --add logstash
    chkconfig logstash on
  • 相关阅读:
    Android Studio:xxx is not an enclosing class 错误的解决方法
    SpringMVC验证框架Validation特殊用法
    在Spring MVC中使用注解的方式校验RequestParams
    Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
    Bean Validation 技术规范特性概述
    JSR 303
    SpringMVC学习
    javax.validation.UnexpectedTypeException: No validator could be found for constraint 'org.hibernate.validator.constraints.Length' validating type
    SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
    Spring AspectJ切入点语法详解
  • 原文地址:https://www.cnblogs.com/hyl8218/p/8466192.html
Copyright © 2020-2023  润新知