Linux initd: script 'Kill' não sendo chamado no runlevel 6 (shutdown)

0

Estou confuso. Eu pensei que sabia como os scripts de inicialização do Linux funcionavam, e parece que não. Para referência eu estou trabalhando em um CentOS5.7 ligeiramente idoso.

Eu escrevi este script que basicamente não faz nada além de imprimir mensagens:

# cat /etc/init.d/dom 

#!/bin/bash
#
# chkconfig: 345 95 5
# description: NOP test
# processname: dom

# Source function library.
. /etc/init.d/functions


RETVAL=0
prog="dom"

start() {
        echo -n $"Starting $prog: "
        echo
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        echo
        return $RETVAL
}

restart() {
        stop
        start
}

reload() {
        restart
}

status_at() {
        echo "OK"
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload|restart)
        restart
        ;;
condrestart)
        restart
        ;;
status)
        status_at
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $?
exit $RETVAL

Uma vez eu copiei para /etc/init.d/ o adicionei usando o chkconfig.

# chkconfig --add dom
# chkconfig --list dom
dom             0:off   1:off   2:off   3:on    4:on    5:on    6:off

O chkconfig cria um monte de links simbólicos para o /etc/init.d/dom.

# find /etc/rc* -name *dom

/etc/rc.d/rc5.d/S95dom
/etc/rc.d/rc6.d/K05dom
/etc/rc.d/rc3.d/S95dom
/etc/rc.d/rc1.d/K05dom
/etc/rc.d/rc4.d/S95dom
/etc/rc.d/rc0.d/K05dom
/etc/rc.d/init.d/dom
/etc/rc.d/rc2.d/K05dom

O serviço pode ser interrompido & iniciado manualmente:

# service dom restart
Stopping dom: 
Starting dom: 

Até agora, tudo isso é bom.

Quando eu inicio no initlevel 3, o 'start' (/etc/rc.d/rc3.d/S95dom) é chamado:

atd: [  OK  ]
Starting dom: 
Starting perfmon: [  OK  ]

No entanto, quando eu desligo (runlevel 6) o 'kill' (/etc/rc.d/rc6.d/K05dom) não é chamado.

INIT: Switching to runlevel: 6
INIT: Sending processes the TERM signal
Stopping atd: [  OK  ]
Stopping perfmon: [  OK  ]

Deveria ter sido parado logo após atd (05).

Eu entendi mal alguma coisa? Como posso depurar isso?

[A pedido, mudei esta questão de:   link ]

    
por dom 05.01.2018 / 19:22

0 respostas