Linux
chkconfig 未在啟動時啟動應用程序腳本
作業系統: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 --list | grep myapp myapp 0:off 1:off 2:on 3:on 4:on 5:on 6:off
myapp 接受開始 | 停止 | 重啟 | 強制重新載入,它們都經過測試可以工作
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 問題)