GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rc_status gibt immer „failed“ zurück?

Einer unserer Entwickler hat einen Dienst, der beim Booten gestartet werden muss. Dieses Skript muss ausgelöst werden:

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

Hier ist das Startskript, mit dem ich arbeite, namens /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

Wenn ich /etc/init.d/bt start ausführe Von der Befehlszeile aus schlägt rc_status jedes Mal fehl, obwohl das Skript einwandfrei startet. Ich verstehe nicht ganz, wie rc_status bestimmt wird; liegt es in meiner Verantwortung, den rc_status-Wert zu setzen?

Ich weiß, dass ich einen Symlink zu /etc/rc.d/rc3.d hinzufügen muss, aber im Moment versuche ich, es über die Befehlszeile als root zum Laufen zu bringen.

Akzeptierte Antwort:

Sie sollten startproc nicht verwenden zum Starten eines Shell-Wrapper-Skripts:startproc ist dazu gedacht, einen Daemon-Prozess direkt zu starten. Es prüft, ob der Prozess läuft und setzt seinen Rückgabecode entsprechend.

In Ihrem Fall startup.sh wird nach dem Start von Tomcat nicht mehr ausgeführt – es wird stattdessen einen Java-Prozess mit einer Reihe von Parametern geben. Da also „startup.sh“ nicht mehr läuft, gibt startproc „failure“ zurück.


Linux
  1. Verwalten Sie den Start mit systemd

  2. Ist ~ immer gleich $home?

  3. Sicherstellen, dass ein Prozess immer ausgeführt wird?

  4. Der Linux-Apropos-Befehl gibt immer nichts Passendes zurück

  5. Autossh schlägt beim Start fehl

Analysieren Sie die Startleistung von Linux

Verstehen von systemd beim Start unter Linux

Systemd lieben lernen

Linux sendet immer Icmp-Umleitung?

Windows – Gnome – Windows immer oben links öffnen?

Skript beim Start?