Я написал сценарий /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!