我已经编写了脚本 /etc/init.d/xxx,用于在 CentOS 5.5 上启动/停止我的服务。
当我调用“service start xxx”或“service stop xxx”时,一切都正常。但是当我重新启动计算机时,我在日志中看到关机时服务并未停止。
但是,它在启动时就启动了。
> chkconfig --列表 xxx xxx 0:关闭 1:关闭 2:开启 3:开启 4:开启 5:开启 6:关闭
我做错了什么。谢谢。
UPD:脚本的标题:
#!/bin/bash
#
# Startup script for the xxx
#
# chkconfig: 345 99 01
# description: This script ...
#
### BEGIN INIT INFO
# Provides: xxx
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Should-Start:
### END INIT INFO
答案1
我并不是 Linux 专家,实际上更像是菜鸟,但为了执行关机脚本,您必须在启动脚本中的 /var/lock/subsys/ 文件夹中创建一个锁定文件。我在这里找到了答案: CentOS 论坛
脚本示例:
#!/bin/sh
# chkconfig: 345 98 11
# description: my auto start-stop script.
echo "my service is doing something :)" >> /root/tempfile
case "$1" in
start)
echo "my service started" >> /root/tempfile
touch /var/lock/subsys/myservice
echo "OK"
;;
stop)
echo "my service stoped" >> /root/tempfile
rm -f /var/lock/subsys/myservice
echo "OK"
;;
esac
答案2
您可能必须在 /etc/rc6.d/ 目录中创建一个链接,以便它在关闭服务器时调用该脚本。
ls -l /etc/rc5.d/K60nfs
lrwxrwxrwx 1 root root 13 2010 年 5 月 13 日 /etc/rc5.d/K60nfs -> ../init.d/nfs
答案3
当您说它没有被关闭时,您是否知道脚本是否从未被调用或者它只是没有做它应该做的事情?
除了其他日志之外,我还会向启动/关闭脚本添加一堆 echo 语句,这些语句执行以下操作:
echo "$(date) Entering script" >> ~root/debugging.log
...
echo "$(date) Entering section x" >> ~root/debugging.log
可能会帮助你找到问题所在
答案4
Bogdan Olteanu 的回答也许可以解决您的问题,我也是。锁定文件必须与启动脚本同名,这样 CentOS 才能将其关闭。假设您的启动方法中应该有以下行:
touch /var/lock/subsys/xxx
必须与服务名称(xxx)完全相同。
干杯,CaioToOn!