Linux

chkconfig 未在啟動時啟動應用程序腳本

  • December 25, 2011

作業系統: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 問題)

引用自:https://serverfault.com/questions/343953