CentOS 5.5: serviço não interrompido no desligamento

5

Eu escrevi o script /etc/init.d/xxx que inicia / interrompe meu serviço no CentOS 5.5.

Quando eu chamo de 'service start xxx' ou 'service stop xxx', tudo funciona bem. Mas quando eu reinicio minha máquina, vejo nos logs que no desligamento o serviço não foi parado.

No entanto, começou na inicialização.

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

O que estou fazendo errado. Obrigado.

UPD: o cabeçalho do script:

#!/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
    
por Boris 21.03.2011 / 13:06

5 respostas

10

Eu não sou um guru do Linux, mas sim um noob, mas para executar o script de desligamento você deve criar um arquivo de bloqueio na pasta / var / lock / subsys / no seu script de inicialização. Eu encontrei a resposta aqui: Fórum do CentOS

Exemplo de script:

#!/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
    
por 06.04.2011 / 14:54
2

Você pode ter que criar um link no diretório /etc/rc6.d/, para que ele chame esse script ao encerrar o servidor.

ls -l /etc/rc5.d/K60nfs

lrwxrwxrwx 1 raiz raiz 13 13 de maio de 2010 /etc/rc5.d/K60nfs - > ../ init.d / nfs

    
por 21.03.2011 / 13:20
1

Quando você diz que não está sendo desligado, você sabe se o roteiro nunca está sendo chamado ou se ele simplesmente não está fazendo o que é esperado?

No topo de outros registros, eu adicionaria um monte de instruções echo ao script de inicialização / desligamento que apenas faz coisas como:

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

Pode ajudar você a rastrear onde procurar o problema

    
por 21.03.2011 / 15:51
0

Você poderia postar o cabeçalho do script?

Algo parecido com isto:

#!/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
    
por 21.03.2011 / 13:21
0

Bogdan Olteanu responde talvez a resposta para o seu caso, foi no meu. O arquivo de bloqueio deve ter o mesmo nome do script de inicialização para que o CentOS possa desligá-lo. Em seu caso hipotético, você deve ter essa linha no seu método de início:

touch /var/lock/subsys/xxx

Deve ser exatamente o mesmo nome do serviço (xxx).

Felicidades, CaioToOn!

    
por 24.06.2011 / 16:25