CentOS 5.5:关机时服务未停止

CentOS 5.5:关机时服务未停止

我已经编写了脚本 /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!

相关内容