2016-09-22 9 views
1

시작 중지 서비스를 만드는 방법을 설명하는이 기사가 있습니다.logstash 전달자를 데몬 서비스로 실행

#!/bin/bash 
# 
# chkconfig: 3 80 20 
# description: boop-logstash-forwarder 
# 
# Get function from functions library 
. /etc/init.d/functions 
# Start the service 

LOGSTASH_FORWARDER="/logiciels/logstash-forwarder/logstash-forwarder" 
LF_CONF="/appli/projects/BOOP-LOGSTASH-FORWARDER/logstash-forwarder.conf" 
SERVICE_NAME="boop-logstash-forwarder" 

start() { 
     initlog -c "echo -n Starting $SERVICE_NAME: " 
     $LOGSTASH_FORWARDER -config=$LF_CONF & 
     ### Create the lock file ### 
     touch /var/lock/subsys/$SERVICE_NAME 
     success $"$SERVICE_NAME startup" 
     echo 
} 
# Restart the service 
stop() { 
     initlog -c "echo -n Stopping $SERVICE_NAME: " 
     killproc $SERVICE_NAME 
     ### Now, delete the lock file ### 
     rm -f /var/lock/subsys/$SERVICE_NAME 
     echo 
} 
### main logiC### 
case "$1" in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    status) 
     status $SERVICE_NAME 
     ;; 
    restart|reload|condrestart) 
     stop 
     start 
     ;; 
    *) 
     echo $"Usage: $0 {start|stop|restart|reload|status}" 
     exit 1 
esac 
exit 0 

나는이 발사 명령은 출력의 리디렉션해야한다 먼저 logstash 전달자가 매우 자세한 콘솔의 제어를 취하고, 이것에 2 문제가 : http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html

그래서 나는이 쓴 파일?

초 및 정지 명령이 작동하지 않습니다 가장 큰 문제는, 내가 얻을 :

Stopping looping-logstash-forwarder:      [FAILED] 

내가 뭔가를 할습니까 스크립트 wront?

감사합니다.

가 PS : 레드햇 엔터프라이즈 리눅스 서버가 여기에 5.9

+0

당신이'killproc' 쓰기 않았거나하다는/usr'에 뭔가/bin /'(RHELS가 작동하지 않아서 죄송합니다). 문제가 거기에 있어야하는 것 같습니다. cmd 라인에서 실행하면 어떻게됩니까? 또는 그것이 스크립트라고 가정하고, cmd 라인에서 수동으로 단계를 실행하여 문제가 무엇인지 확인하십시오. 행운을 빕니다. – shellter

+0

kill proc은 /etc/init.d/functions에 정의되어 스크립트에서 가져와야 작동합니다. –

+0

하지만 확실히 작동하지 않는 것 같습니다. 그래서 이유를 알고 싶습니다. 이 문제를 해결하기 위해 탐색 할 다른 이론이나 경로가 있다면,'killproc'이 예상대로 작동하는지 확인하십시오. 'killproc "$ serviceName";을 할 수 있습니다. killproc 1> &2 ; exit fi'를 실행하여 에코 에러가 발생하면'[FAILED]'텍스트를 생성하는 killproc이라는 것을 확인하십시오. 행운을 빕니다. – shellter

답변

1

을 해제하는 대신 killproc의 죽일 사용하는 작업 vesion입니다 :

#!/bin/bash 
# 
# chkconfig: 3 80 20 
# description: boop-logstash-forwarder 
# 
# Get function from functions library 
. /etc/init.d/functions 
# Start the service 

LOGSTASH_FORWARDER="/logiciels/logstash-forwarder/logstash-forwarder" 
LF_CONF="/appli/projects/BOOP-LOGSTASH-FORWARDER/logstash-forwarder.conf" 
LOGFILE="/appli/projects/BOOP-LOGSTASH-FORWARDER/logstash-forwarder.log" 
PIDFILE="/appli/projects/BOOP-LOGSTASH-FORWARDER/logstash-forwarder.pid" 
SERVICE_NAME="boop-logstash-forwarder" 

blockUntilFileExist() { 
    while ! [[ -f "$1" ]] ; do 
     echo "Waiting for creation of $1" 
     sleep 1 
    done 
} 

start() { 
     initlog -c "echo -n Starting $SERVICE_NAME: " 
     $LOGSTASH_FORWARDER -config=$LF_CONF > $LOGFILE 2>&1 & echo $! > $PIDFILE 
     blockUntilFileExist $PIDFILE 
     success $"$SERVICE_NAME startup" 
     echo 
} 

stop() { 
     initlog -c "echo -n Stopping $SERVICE_NAME: " 
     if [ ! -f $PIDFILE ]; then 
      echo "process with pid contained in $PIDFILE does not exist" 
      exit 
     else 
      echo "killing process with pid contained in $PIDFILE" 
      kill `cat $PIDFILE` 
     fi 
     echo 
} 
### main logiC### 
case "$1" in 
    start) 
     start 
     ;; 
    stop) 
     stop 
     ;; 
    status) 
     status $SERVICE_NAME 
     ;; 
    restart|reload|condrestart)1 
     stop 
     start 
     ;; 
    *) 
     echo $"Usage: $0 {start|stop|restart|reload|status}" 
     exit 1 
esac 
exit 0