rc_status는 항상 "실패"를 반환합니다.

rc_status는 항상 "실패"를 반환합니다.

우리 개발자 중 한 명이 부팅 시 시작해야 하는 서비스를 가지고 있습니다. 스크립트를 트리거해야 합니다.

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

이것은 제가 사용하고 있는 시작 스크립트입니다./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

내가 달릴 때/etc/init.d/bt 시작명령줄에서는 스크립트가 정상적으로 시작되더라도 rc_status가 매번 실패합니다. rc_status가 어떻게 결정되는지 잘 모르겠습니다. rc_status 값을 설정하는 것이 내 책임입니까?

/etc/rc.d/rc3.d에 심볼릭 링크를 추가해야 한다는 것을 알고 있지만 이제 명령줄에서 루트로 작동하도록 하려고 합니다.

답변1

쉘을 시작하기 위해 래퍼 스크립트를 사용해서는 안 됩니다 startproc. startproc은 데몬 프로세스를 직접 시작하기 위한 것입니다. 프로세스가 실행 중인지 확인하고 이에 따라 반환 코드를 설정합니다.

귀하의 경우 startup.shTomcat은 시작 후 실행되지 않습니다. 매개변수 팩이 포함된 Java 프로세스가 있을 것입니다. 따라서 "startup.sh"가 더 이상 실행되지 않으므로 startproc은 "Failed"를 반환합니다.

답변2

내가 찾은이것StackOverflow에서. 거기서 그들이 말했지

rc_status...rc_exit에서 반환된 반환 값인 "상태 값"을 설정합니다(init.d 스크립트 끝에 배치됨).

답변3

devops-incubator RPM 패키지에서 이를 어떻게 처리하는지 확인할 수 있습니다.

https://github.com/hgomez/devops-incubator/blob/master/rpm-packaging/myjenkins/SOURCES/initd.skel

관련 정보