開発者の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としてコマンドラインからシンボリックリンクを機能させようとしています。
Shell-wrapper-scriptの開始にstartproc
を使用しないでください。startprocは、デーモンプロセスを直接開始することを目的としています。プロセスが稼働しているかどうかを確認し、それに応じてリターンコードを設定します。
あなたの場合startup.sh
Tomcatの起動後は実行されません-代わりに、パラメータのバッグを含むJavaプロセスがあります。したがって、「startup.sh」はもう実行されていないため、startprocは「failure」を返します。
私はここStackOverflowで this を見つけました。彼らはそこで言う
rc_status
...「ステータス値」を設定します。これはrc_exit(init.dスクリプトの最後に配置する)によって返される戻り値です。
Devops-incubatorのRPMパッケージでどのように処理したかを確認できます。
https://github.com/hgomez/devops-incubator/blob/master/rpm-packaging/myjenkins/SOURCES/initd.skel