Re: AW: [maillist] Startscripts

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

Peter Habisreuther schrieb:
>
> 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
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