我的 init.d 脚本从未使用 stop 参数调用?

dac*_*cot 2 linux init init.d

我创建了一个名为 blueBoxT 的脚本来启动和停止 Oracle,并将其放置在 /etc/init.d 目录中。

#!/bin/bash
echo "blueBoxT $1 - `date '+%Y%m%d%H%M'`" >> /root/blueBoxT.log
case "$1" in
  'start')
    echo "Starting Oracle"
    su - oracle -c "/home/oracle/startDBT"
    ;;
  'stop')
    echo "Stopping Oracle"
    su - oracle -c "/home/oracle/stopDBT"
    ;;
  *)
    echo "`basename $0`: usage: `basename $0` { stop | start }"
    ;;
esac
exit 0
Run Code Online (Sandbox Code Playgroud)

我做了符号链接...

root@dev /etc/rc.d
# find . -name *blueBox*
./rc2.d/K11blueBox
./rc6.d/K11blueBox
./init.d/blueBoxT
./rc1.d/K11blueBox
./rc3.d/S97blueBox
./rc0.d/K11blueBox
./rc5.d/S97blueBox
./rc4.d/S97blueBox
Run Code Online (Sandbox Code Playgroud)

/root/blueBoxT.log 中的日志显示了启动命令并且 Oracle 实例已启动。

停止命令似乎永远不会被调用。它不在我的日志中。

root@dev /root
# cat blueBoxT.log
blueBoxT start - 201008051323
blueBoxT start - 201008051327
blueBoxT start - 201008051346
blueBoxT start - 201008051356
Run Code Online (Sandbox Code Playgroud)

我使用以下命令关闭了 Fedora 10...

shutdown -h now
Run Code Online (Sandbox Code Playgroud)

我有什么配置错误而无法接收停止以便我可以有序关闭 Oracle?

Mar*_*ner 5

我没有那个版本的 Fedora,但对于 RHEL5,/etc/rc.d/rc 的重要部分是:

subsys=${i#/etc/rc$runlevel.d/K??}
[ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] \
        || continue
Run Code Online (Sandbox Code Playgroud)

您的问题可能是您/var/lock/subsys/blueBox在启动时没有触摸 a 。

init.d 中的文件也被调用,blueBoxT而你的 rc?.d 脚本被调用K??blueBox(没有尾随T),这很令人困惑。