web-dev-qa-db-ja.com

chkconfigが起動時にアプリケーションスクリプトを開始しない

OS:Centos 5.7

私のアプリケーションスクリプトは次のように始まります(/etc/init.d/myapp):

#!/bin/sh
# chkconfig 2345 85 60
# description: my application controller
# processname: myapp

NAME=MyApp
DIR=/opt/myapp/
RUN_AS=root

### BEGIN INIT INFO
# Provides:          myapp
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       Starts the myapp application
### END INIT INFO

Chkconfigステータス

chkconfig --list | grep myapp

myapp            0:off   1:off   2:on    3:on    4:on    5:on    6:off

myappは開始を受け入れます|やめろ再起動| force-reloadとそれらはすべて動作するようにテストされています

myappコントローラーは基本的に、アプリケーションのいくつかのデーモンサービスを開始する必要があります。 service myapp startシステムの再起動後、すべてが正常に動作します。しかし、何らかの理由で、chkconfigは自動的に起動しません。誰かが私が間違っている可能性があることを説明できますか?

更新:

Cjcの情報のおかげで、mysqlなどの必要なサービスの前にアプリケーションコントローラがロードされているようです。

クイック検索の結果は次のとおりです。

find /etc -name rc* -type d | xargs ls | grep myapp
K50myapp
K50myapp
S50myapp
S50myapp
S50myapp
S50myapp
K50myapp

では、スクリプトで85(開始)、60(停止)に設定したのに、なぜ順序が50に設定されるのでしょうか。そして、どうすればこれを変更できますか?

ソリューション(彼の回答へのコメントでcjcによって指摘されたとおり)

不正な構文:

# chkconfig 2345 85 60

訂正(chkconfigの後にコロンが必要):

# chkconfig: 2345 85 60
4
gAMBOOKa

chkconfigは基本的に、たとえば/etc/rc3.d/S85myappから/etc/init.d/myappへのシンボリックリンクを作成します。それらのリンクが存在することを確認してください。 「chkconfig --list」が「オン」であることを示しているので、私はそうしていると思います。

/etc/init.d/myappはプロンプトから実行できますが、起動中には発生しないため、PATHに問題があるか、myappを実行する前に起動して実行する必要があるサービスが実際にはmyappの後に初期化します。 /etc/rc3.d(または最初のランレベルが何であれ)のスクリプトは、ソート順に実行されることに注意してください。 myappが実行に必要なすべてを備えていることを確認します。

(ただし、PATHの問題があると思います)

9
cjc