rc_status sempre retorna “falhou”

4

Um de nossos desenvolvedores tem um serviço que precisa ser iniciado na inicialização. Este script precisa ser disparado:

/app/bt/preview/apache-tomcat-5.5.27/bin/startup.sh

Aqui está o script de inicialização com o qual estou trabalhando, chamado /etc/init.d/bt :

#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          BTServer
# Required-Start:    $local_fs $network $remote_fs
# Required-Stop:     $local_fs $network $remote_fs
# Should-Start:
# Should-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: BT Server
# Description:       BT Server
### END INIT INFO
#
#
# Run BT startup scripts as btu user
#
# Location of startup script
BT_SCR='/app/bt/preview/apache-tomcat-5.5.27/bin/startup.sh'

test -x $BT_SCR || exit 5

# Set up rc_status command
. /etc/rc.status
rc_reset

case "$1" in
start)
        echo -n "Starting BT Server"
        startproc -u btu $BT_SCR
        rc_status -v
        ;;
        *)
        echo "Usage: $0 { start }"
        exit 1

        ;;
esac
exit 0

Quando executo o /etc/init.d/bt start na linha de comando, o rc_status falha sempre, mesmo que o script seja iniciado corretamente. Eu não entendo como o rc_status é determinado; É minha responsabilidade definir o valor de rc_status?

Eu sei que precisarei adicionar um link simbólico para /etc/rc.d/rc3.d, mas por enquanto estou tentando fazer com que ele funcione a partir da linha de comando como root.

    
por Banjer 15.11.2011 / 19:32

3 respostas

2

Você não deve usar startproc para iniciar um script shell-wrapper: startproc destina-se a iniciar um processo do daemon diretamente. Ele verifica se o processo está ativo e em execução e define seu código de retorno de acordo.

No seu caso startup.sh não estará em execução após a inicialização do Tomcat - haverá um processo java com uma caixa de parâmetros. Então, como "startup.sh" não está mais em execução, o startproc retornará "falha".

    
por 16.11.2011 / 21:32
0

Eu encontrei este aqui no StackOverflow. Eles dizem lá que

rc_status ... sets the "status value", which is the return value returned by rc_exit (which you place at the end of your init.d script)

    
por 15.11.2011 / 21:56
0

Você poderia dar uma olhada em como eu lidava com isso em meus pacotes RPM em devops-incubator:

link

    
por 04.02.2013 / 12:39