• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

eintrag in runlevelEditor anpassen

dialsc

Newbie
hi all,

hab da mal ne kleine frage.

hab ein kleines (wie nennt man das, startScript?) unter /etc/init.d in meiner SuSe Linux 9.0 Pro distri gelegt, welches mir den ddclient (stichwort dyndns) startet. hierfuer kann ich dann auch im runlevelEditor bestimmen, ob und wenn ja, unter welchen runLevels ddclient gestartet werden soll. dies tut soweit auch. zwei dinge allerdings.

erstens:
wie bekomme ich so etwas wie ne abhaengigkeit hin. will heissen, wie kann ich festlegen, dass ddclient erst dann gestartet werden soll, nachdem network und bind up sind?

zweitens:
ist zwar nur ein schoenheitsMarkel, interessiert mich aber trozdem. beim starten und beenden wird mir kein 'done' oder 'failed' angezeigt. es erscheint ganz einfach gar keine meldung, ob es geklappt hat oder nicht. das wuerde ich ganz gerne noch hin bekommen.

hat hierzu vielleich jemand ne idee?

tia

dialsc

das script:

Code:
#!/bin/sh
#
# ddclient      This shell script takes care of starting and stopping
#               ddclient.
#
# chkconfig: 2345 65 35
# description: ddclient provides support for updating dynamic DNS services.

[ -f /etc/ddclient.conf ] || exit 0

PATH=/usr/sbin:${PATH}
COLUMNS=9999
export PATH COLUMNS

program=ddclient
# See how we were called.
case "$1" in
  start)
	# Start daemons.
	echo -n "Starting ddclient: "
	ddclient -daemon 300
	echo   
	;;
  stop)
	# Stop daemons.
	echo -n "Shutting down ddclient: "
	kill `ps -aef | awk '/[ \/]perl.*ddclient/ { print $2}'`
	echo
	;;
  restart)
	$0 stop
	$0 start
	;;
  status)
	pids=`ps -aef | awk '/[ \/]perl.*ddclient/ { print $2}'`
	if test "$pids"
	then
		for p in $pids
		do
			echo "$program (pid $p) is running"
		done
	else
		echo "$program is stopped"
	fi
	;;
  *)
	echo "Usage: ddclient {start|stop|restart|status}"
	exit 1
esac

exit 0
 

wenf

Hacker
schreibe am anfang deines Scriptes:
gleich nach #!/bin/sh
Code:
### BEGIN INIT INFO
# Provides:       dyndns-client
# Required-Start: $network $named
# Default-Start:  2 3 5
# Default-Stop:   2 3 5
# Description:    da kannst du eine Beschreibung hin tun / fuer Runleveleditor
### END INIT INFO
dann sollte Yast Runleveleditor (dienst deaktivieren und wieder aktivieren) diesen dienst in der bootreihenfolge so eintragen, dass network und named zuvor gestartet werden.

so und das mit den done .... - warte mal muß schnell weg
melde mich wieder
 

wenf

Hacker
das mit done funst so:

Code:
#!/bin/sh
#
# Beschreibung für Runleveleditor
#
. /etc/rc.status
# First reset status of this service
rc_reset
dann gibt es in deinem Programm einern teil für start und stop

beginnt mit
Code:
start;
und endet beim nächsten
Code:
;;
schreibe in jede Zeile vor dem ;;
Code:
# Remember status and be verbose
        rc_status -v

das sollte dann so aussehen

Code:
case "$1" in 
  start) 
   # Start daemons. 
   echo -n "Starting ddclient: " 
   ddclient -daemon 300 
   echo  
   # Remember status and be verbose
   rc_status -v
   ;;

*EDIT*
dann sotte done bei erfolg kommen
faild muß rc_faild stehen
 
OP
D

dialsc

Newbie
hi wenf,

zunaechst einmal thx fuer deine antwort. es ist doch schoen, dass es menschen gibt, die sich auskennen... ;-)

so ganz hat das aber leider nicht geklappt.
die abhaengigkeit mit named (BIND) hab ich nun. auch tut die ausgabe von done nach dem starten. leider stimmt da aber etwas mit dem shutdown noch nicht. kill meldet sinngemaess, dass es falsch verwendet wurde.

ausgabe kill:
Code:
/etc/init.d/ddclient stop gab 0 (Erfolg) zurück:
Shutting down ddclient: kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
..failed

mein script sieht derzeit so aus:
Code:
#!/bin/sh
#
# init.d/ddclient
#
### BEGIN INIT INFO
# Provides:       ddclient
# Required-Start: $named $network
# Required-Stop:
# Default-Start:  3 5
# Default-Stop:
# Description:    ddclient provides support for updating dynamic DNS services.
### END INIT INFO

. /etc/rc.status
rc_reset

[ -f /etc/ddclient.conf ] || exit 0

PATH=/usr/sbin:${PATH}
COLUMNS=9999
export PATH COLUMNS

program=ddclient
# See how we were called.
case "$1" in
  start)
	# Start daemons.
	echo -n "Starting ddclient: "
	ddclient -daemon 300
	# Remember status and be verbose
	rc_status -v
	;;
  stop)
	# Stop daemons.
	echo -n "Shutting down ddclient: "
	kill `ps -aef | awk '/[ \/]perl.*ddclient/ { print $2}'`
	# Remember status and be verbose
	rc_status -v
	;;
  restart)
	$0 stop
	$0 start
	# Remember status and be verbose
	rc_status
	;;
  status)
	pids=`ps -aef | awk '/[ \/]perl.*ddclient/ { print $2}'`
	if test "$pids"
	then
		for p in $pids
		do
			echo "$program (pid $p) is running"
		done
	else
		echo "$program is stopped"
	fi
	# Remember status and be verbose
	rc_status -v
	;;
  *)
	echo "Usage: ddclient {start|stop|restart|status}"
	exit 1
esac

exit 0

thx und nen schoenen noch

dialsc
 
Oben