2016-09-22 16 views
1

スタートストップサービスの作成方法を説明したこの記事が見つかりました。 http://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.htmlデーモンサービスとしての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フォワーダは、コンソールANの制御を取って、これで2問題を抱えているが、非常に冗長ですファイル?停止コマンドが動作しません

秒との最大の問題は、私が取得:

Stopping looping-logstash-forwarder:      [FAILED] 

私はスクリプトの中で何かwrontをしましたか?

ありがとうございました。

PS:Red Hat Enterprise LinuxにServerはここで5.9

+0

/あなたは 'killproc'を書いたりすることをは'は/ usrで何かありましたbin/'(RHELSを使用していないのは申し訳ありません)。問題がそこになければならないようです。 cmd行から実行するとどうなりますか?または、それがスクリプトであると仮定して、それを手動でcmd-lineから実行して、問題の内容を確認します。がんばろう。 – 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 
関連する問題