操作系统: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
答案1
chkconfig 本质上是从 /etc/rc3.d/S85myapp 到 /etc/init.d/myapp 建立一个符号链接。验证这些链接是否存在。我认为它们确实存在,因为“chkconfig --list”显示它们处于“打开”状态。
由于您可以从提示符执行 /etc/init.d/myapp,但它不会在启动期间发生,我猜想是 PATH 存在问题,或者您在执行 myapp 之前需要启动并运行的服务实际上是在 myapp 之后初始化的。请记住,/etc/rc3.d(或您的初始运行级别)中的脚本是按排序顺序执行的。验证 myapp 是否具有运行所需的一切。
(不过我猜测是 PATH 问题)