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.