zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    poj 2187 Beauty Contest(旋转卡壳)
    poj 2540 Hotter Colder(极角计算半平面交)
    poj 1279 Art Gallery(利用极角计算半平面交)
    poj 3384 Feng Shui(半平面交的联机算法)
    poj 1151 Atlantis(矩形面积并)
    zoj 1659 Mobile Phone Coverage(矩形面积并)
    uva 10213 How Many Pieces of Land (欧拉公式计算多面体)
    uva 190 Circle Through Three Points(三点求外心)
    zoj 1280 Intersecting Lines(两直线交点)
    poj 1041 John's trip(欧拉回路)
  • 原文地址:https://www.cnblogs.com/hyl8218/p/8466192.html
Copyright © 2011-2022 走看看