Jeden z našich vývojářů má službu, kterou je třeba spustit při bootování. Tento skript je třeba spustit:
/app/bt/preview/apache-tomcat-5.5.27/bin/startup.sh
Zde je spouštěcí skript, se kterým pracuji, s názvem /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
Když spustím /etc/init.d/bt start z příkazového řádku se rc_status pokaždé nezdaří, i když se skript spustí v pořádku. Moc nerozumím tomu, jak se určuje rc_status; je mojí odpovědností nastavit hodnotu rc_status?
Vím, že budu muset přidat symbolický odkaz do /etc/rc.d/rc3.d, ale zatím se to snažím zprovoznit z příkazového řádku jako root.
Přijatá odpověď:
Neměli byste používat startproc
pro spuštění skriptu shell-wrapper:startproc je určen ke spuštění procesu démona přímo. Zkontroluje, zda je proces spuštěn a podle toho nastaví návratový kód.
Ve vašem případě startup.sh
po spuštění Tomcatu nepoběží – místo toho bude java proces s pytlem parametrů. Takže protože „startup.sh“ již neběží, startproc vrátí „failure“.