chkconfig 未在启动时启动应用程序脚本

gAM*_*OKa 4 linux centos service boot 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
Run Code Online (Sandbox Code Playgroud)

chkconfig 状态

chkconfig --list | grep myapp

myapp            0:off   1:off   2:on    3:on    4:on    5:on    6:off
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

那么为什么在脚本中我设置为 85(start) 60(stop) 时,顺序设置为 50?我该如何改变这一点?

解决方案(正如 cjc 在对他的回答的评论中指出的那样)

不正确的语法:

# chkconfig 2345 85 60
Run Code Online (Sandbox Code Playgroud)

更正(chkconfig 后需要冒号):

# chkconfig: 2345 85 60
Run Code Online (Sandbox Code Playgroud)

cjc*_*cjc 9

chkconfig 本质上是从 /etc/rc3.d/S85myapp 到 /etc/init.d/myapp 的符号链接。验证这些链接是否存在。我假设他们这样做,因为“chkconfig --list”显示他们“开启”。

由于您可以从提示符执行 /etc/init.d/myapp,但它不会在启动期间发生,我的猜测是 PATH 存在问题,或者您在执行 myapp 之前需要启动并运行的服务实际上是在 myapp 之后初始化。请记住,/etc/rc3.d(或任何初始运行级别)中的脚本是按排序顺序执行的。验证 myapp 具有运行所需的一切。

(不过我猜是 PATH 问题)