web-dev-qa-db-ja.com

rc_statusは常に「失敗」を返します

開発者の1人が、起動時に開始する必要のあるサービスを持っています。このスクリプトを実行する必要があります。

/app/bt/preview/Apache-Tomcat-5.5.27/bin/startup.sh

これが私が使用している起動スクリプトです/ etc/init.d/bt

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          BTServer
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: BT Server
# Description:       BT Server
### END INIT INFO
#
#
# Run BT startup scripts as btu user
#
# Location of startup script
BT_SCR='/app/bt/preview/Apache-Tomcat-5.5.27/bin/startup.sh'

test -x $BT_SCR || exit 5

# Set up rc_status command
. /etc/rc.status
rc_reset

case "$1" in
start)
        echo -n "Starting BT Server"
        startproc -u btu $BT_SCR
        rc_status -v
        ;;
        *)
        echo "Usage: $0 { start }"
        exit 1

        ;;
esac
exit 0

コマンドラインから/ etc/init.d/bt startを実行すると、スクリプトが正常に起動しても、毎回rc_statusが失敗します。 rc_statusがどのように決定されるのかよくわかりません。 rc_status値を設定するのは私の責任ですか?

/etc/rc.d/rc3.dにシンボリックリンクを追加する必要があることはわかっていますが、今のところ、rootとしてコマンドラインからシンボリックリンクを機能させようとしています。

4
Banjer

Shell-wrapper-scriptの開始にstartprocを使用しないでください。startprocは、デーモンプロセスを直接開始することを目的としています。プロセスが稼働しているかどうかを確認し、それに応じてリターンコードを設定します。

あなたの場合startup.sh Tomcatの起動後は実行されません-代わりに、パラメータのバッグを含むJavaプロセスがあります。したがって、「startup.sh」はもう実行されていないため、startprocは「failure」を返します。

2
Nils

私はここStackOverflowで this を見つけました。彼らはそこで言う

rc_status ...「ステータス値」を設定します。これはrc_exit(init.dスクリプトの最後に配置する)によって返される戻り値です。

0
Adam Trhon

Devops-incubatorのRPMパッケージでどのように処理したかを確認できます。

https://github.com/hgomez/devops-incubator/blob/master/rpm-packaging/myjenkins/SOURCES/initd.skel

0
hgomez