linux logstash启动脚本,logstash服务启动脚本

这篇博客详细介绍了Linux init.d脚本如何管理和启动Logstash服务,涉及配置文件路径、用户权限设置、资源限制及日志管理。通过学习,读者将理解如何正确启动和停止Logstash,并掌握关键参数的设置。
摘要由CSDN通过智能技术生成

vi /etc/init.d/logstash

#!/bin/sh# Init scriptforlogstash

# Maintained by Elasticsearch

# Generated by pleaserun.

# Implemented based on LSB Core3.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 PATHif [ `id -u` -ne 0 ]; then

echo "You need root privileges to run this script"exit1

finame=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=16384LS_NICE=19LS_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 ]thenEXTRA_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 askingforstatus.echo $! >$pidfileecho "$name started."return0}

stop() {

# Try a few times tokillTERM the programif status ; thenpid=`cat "$pidfile"`echo "Killing $name (pid $pid) with SIGTERM"

kill -TERM $pid

# Waitforit to exit.for i in 1 2 3 4 5 ; do

echo "Waiting $name (pid $pid) to die..."status||breaksleep 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 $pidecho "$name killed with SIGKILL."

else

echo "$name stop failed; still running."

fi

else

echo "$name stopped."

fi

fi}

status() {if [ -f "$pidfile" ] ; thenpid=`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 ifthis 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.

return0

elsereturn2 # program is dead but pid fileexistsfi

elsereturn3# program is not runningfi}

force_stop() {if status ; thenstop

status&& kill -KILL `cat "$pidfile"`fi}case "$1" instart)

status

code=$?

if [ $code -eq 0 ]; then

echo "$name is already running"

elsestart

code=$?

fiexit $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"

fiexit $code

;;

restart)

stop&&start

;;*)echo "Usage: $SCRIPTNAME {start|stop|force-stop|status|restart}" >&2exit3;;esacexit $?

chmod +x /etc/init.d/logstash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值