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
chkconfigは基本的に、たとえば/etc/rc3.d/S85myappから/etc/init.d/myappへのシンボリックリンクを作成します。それらのリンクが存在することを確認してください。 「chkconfig --list」が「オン」であることを示しているので、私はそうしていると思います。
/etc/init.d/myappはプロンプトから実行できますが、起動中には発生しないため、PATHに問題があるか、myappを実行する前に起動して実行する必要があるサービスが実際にはmyappの後に初期化します。 /etc/rc3.d(または最初のランレベルが何であれ)のスクリプトは、ソート順に実行されることに注意してください。 myappが実行に必要なすべてを備えていることを確認します。
(ただし、PATHの問題があると思います)