Re: AW: [maillist] Startscripts

Peter Habisreuther (Peter.Habisreuther@ciw.uni-karlsruhe.de)
Mon, 05 Jul 1999 20:07:42 +0200

Hi Ihrs,

Vielleicht ist es bloede, was ich sage:

Ich habe das auch mal gemacht, und dabei ging es erst, nachdem
ich im Skript auch das
logexec touch $LOCKDIR/<subsysname>
eingefuegt hatte. Damit erkennt die rc.d ob das System schon oben ist,
wenn diese Datei existiert, dann wird das skript auch nicht ausgefuehrt.

Ich habe also ein einfaches Skript gemacht, das in /etc/starte-rest
steht.

Also, das Skript, das ich eigentlich ausfuehren will heisst:
/etc/starte-rest/user-start
bzw.
/etc/starte-rest/user-stop
beim runterfahren.

Es wird vom folgenden Skript /etc/init.d/starte_rest aufgerufen.

#!/bin/bash
#
#################################################################
# #
# File: /etc/init.d/starte_rest #
# Modified: P. Habisreuther #
# Last change: 03.01.97 #
# #
#################################################################

subsys_parameter=$1
LOCKDIR=/var/lock/subsys
STARTUP_OK=0
STARTUP_FAIL=1
STARTUP_NA=2
#######################################################################
# Etwas User-freundlicher, warum denn ein exit passiert.
# steht nacher im LOGFILE :-)
#######################################################################
start_and_stop() {
if [ -f /etc/init.d/functions ]
then
source /etc/init.d/functions
else
echo "FAIL: Datei /etc/init.d/functions ist nicht vorhanden!"
exit $STARTUP_FAIL
fi
source_file /etc/sysconfig/runservices FAIL_ON_ERROR
check_service "$STARTE_REST" STARTE_REST NA_ON_ERROR
print_message
check_lock $LOCKDIR/starte_rest "$subsys_parameter"
}
#######################################################################
case "$subsys_parameter" in
start_msg)
echo -n "Starte registrierte Jobs..."
;;
stop_msg)
echo -n "Beende registrierte Jobs..."
;;
start)
start_and_stop
logecho "Starte alle registrierten Jobs: "
logexec /etc/starte-rest/user-start
logexec touch $LOCKDIR/starte_rest
;;
stop)
start_and_stop
logecho "Stoppe alle registrierten Jobs("$MAX_WAIT"): "
logexec /etc/starte-rest/user-stop
logexec rm -f $LOCKDIR/starte_rest
;;
restart)
$0 stop
$0 start
exit $?
;;
*)
echo "Usage: starte_rest {start|stop}"
exit 1
esac

exit 0

Dann habe ich einen Link in die init.d gemacht:
cd /etc/init.d
ln -s ../starte-rest/starte_rest

Dann noch die Links in die rc_.dīs und geht.

Das alles steht in einem Skript in /etc/starte-rest (damit ich nicht
vergesse, was ich getan habe):
======================================================================
#! /bin/bash
# by P. Habisreuther

DOINSTALL=y

# remove everything that was changed by this skript
rm -f /etc/rc?.d/*starte_rest
rm -f /etc/init.d/starte_rest
rm -f /var/lock/subsys/starte_rest

if [ ${DOINSTALL} = "y" ]; then

# link the init-Skript of this dir. to init.d
ln -s ../starte-rest/starte_rest ../init.d/starte_rest

# link the rc?.d skripts to the init.d link
ln -s ../init.d/starte_rest ../rc0.d/K08starte_rest
ln -s ../init.d/starte_rest ../rc1.d/K08starte_rest
ln -s ../init.d/starte_rest ../rc2.d/S92starte_rest
ln -s ../init.d/starte_rest ../rc3.d/S92starte_rest
ln -s ../init.d/starte_rest ../rc5.d/S92starte_rest
ln -s ../init.d/starte_rest ../rc6.d/K08starte_rest
======================================================================

Man muss uebrigens aufpassen, dass das Skript innerhalb des
TIMEOUTS ausgefuehrt wird, ansonsten :- kill, kill, kill

Nun denn, genug gefaselt, vielleicht hilfts ja....
Habis