Назад | Перейти на главную страницу

CentOS 5.5: служба не останавливается при завершении работы

Я написал сценарий /etc/init.d/xxx, который запускает / останавливает мою службу на CentOS 5.5.

Когда я вызываю «запуск службы xxx» или «остановка службы xxx», все работает нормально. Но когда я перезагружаю свой компьютер, я вижу в журналах, что при выключении служба не была остановлена.

Однако это началось при загрузке.

> chkconfig --list xxx 
 xxx  0:off   1:off   2:on    3:on    4:on    5:on    6:off

Что делаю не так. Спасибо.

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

Я не гуру 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

Возможно, вам придется создать ссылку в каталоге /etc/rc6.d/, чтобы он вызывал этот сценарий при завершении работы сервера.

ls -l /etc/rc5.d/K60nfs

lrwxrwxrwx 1 root root 13 мая 2010 г. /etc/rc5.d/K60nfs -> ../init.d/nfs

Когда вы говорите, что он не отключается, знаете ли вы, что сценарий никогда не вызывается или он просто не выполняет то, что должен?

Помимо других журналов, я бы добавил к скрипту запуска / выключения несколько эхо-операторов, которые просто выполняют следующие действия:

echo "$(date) Entering script" >> ~root/debugging.log
...
echo "$(date) Entering section x" >> ~root/debugging.log

Может помочь вам определить, где искать проблему

Не могли бы вы выложить заголовок скрипта?

Что-то вроде этого:

#!/bin/sh
#
# /etc/init.d/mysystem
# Subsystem file for "MySystem" server
#
# chkconfig: 2345 95 05 
# description: MySystem server daemon
#
# processname: MySystem
# config: /etc/MySystem/mySystem.conf
# config: /etc/sysconfig/mySystem
# pidfile: /var/run/MySystem.pid

Богдан Олтяну отвечает, может быть, ответ в вашем случае был в моем. Файл блокировки должен иметь то же имя, что и сценарий запуска, чтобы CentOS могла его закрыть. В вашем гипотетическом случае у вас должна быть эта строка в вашем методе запуска:

touch /var/lock/subsys/xxx

Должно быть точно такое же название службы (xxx).

Ура, CaioToOn!