Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

eintrag in runlevelEditor anpassen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
dialsc
Newbie
Newbie
Beiträge: 23
Registriert: 17. Apr 2004, 04:21

eintrag in runlevelEditor anpassen

Beitrag von dialsc »

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: Alles auswählen

#!/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

Benutzeravatar
wenf
Hacker
Hacker
Beiträge: 422
Registriert: 8. Mär 2004, 11:23
Wohnort: ÖSI-Land
Kontaktdaten:

Beitrag von wenf »

schreibe am anfang deines Scriptes:
gleich nach #!/bin/sh

Code: Alles auswählen

### 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
Benutzeravatar
wenf
Hacker
Hacker
Beiträge: 422
Registriert: 8. Mär 2004, 11:23
Wohnort: ÖSI-Land
Kontaktdaten:

Beitrag von wenf »

das mit done funst so:

Code: Alles auswählen

#!/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: Alles auswählen

start;
und endet beim nächsten schreibe in jede Zeile vor dem ;;

Code: Alles auswählen

# Remember status and be verbose
        rc_status -v
das sollte dann so aussehen

Code: Alles auswählen

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
dialsc
Newbie
Newbie
Beiträge: 23
Registriert: 17. Apr 2004, 04:21

Beitrag von dialsc »

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: Alles auswählen

/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: Alles auswählen

#!/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
Antworten