Guten Tag Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind. Hat einer eine Idee, was ich da machen kann? (nicht in /etc/profile.local) Grüße ChristophRaucher --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On Mon, 23 Okt 2000, ChristophR. wrote:
Guten Tag
Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind.
Hallo Christoph, schau mal im Verzeichnis /sbin/init.d/rc2.d Da findest Du jede Menge Verweise auf Skripte, deren Namen mit S oder mit K anfangen. S steht für start, K für kill Die Skripte werden in der Reihenfolge der Nummern, die auf den ersten Buchstaben folgen ausgeführt... Wenn Du also das zu startende Programm mit einem Skript S99xxx startest und mit K00xxx löschst, sollte alles funktionieren. Steht AFAIK auch im Handbuch unter Bootkonzept oder so... Gruß Christoph -- Christoph Maurer Jülicher Str. 80 - 52070 Aachen mailto:christoph-maurer@gmx.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, On Mon, Oct 23, 2000 at 18:19 +0200, ChristophR. wrote:
Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind. Hat einer eine Idee, was ich da machen kann? (nicht in /etc/profile.local)
Ganz einfach selbst ein Bootskript schreiben. Infos über das SuSE-Bootkonzept findest Du im Handbuch (ja, das Bootkonzept unterscheidet sich zwischen den Distris mehr oder weniger). Bootskripte gehören nach /sbin/init.d/ . Dort liegt eines namens »skeleton«, das Du als Rohfassung verwenden solltest (Grundlage aller SuSE-Skripte). Dann die Links setzen. (rc2.d für den Runlevel 2). Die Reihenfolge der Ausführung richtet sich nach dem Namen. Schau' Dir einfach mal die anderen an. Gruß, Bernhard -- **** LINUX - WeilŽs Betriebssystem eben ned wurscht is **** Homepage: http://www.linuxinfopage.de * Reg. User #: 171705 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
* ChristophR. schrieb am 23.Okt.2000:
Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind. Hat einer eine Idee, was ich da machen kann? (nicht in /etc/profile.local)
Wenn Du es im runlevel 2 starten willst, ist boot.local auch nicht der richtige Ort. boot.local wird nur nach dem booten, nicht aber nach einem runlevelwechsel gestartet. Schreibe Dir ein Skript in /sbin/init.d. Dort gibt es ein skeleton. Kopier es Dir mit einem beliebigen aber noch nicht vergebenen Namen, und passe es an. Dann mache zwei links darauf. Einmal mit einem S davor und einmal mit einem K. Mit dem S davor wird bei einem wechsel zu runlevel 2 ausgeführt und mit einem K davor bei einem runlevelwechsel von 2 weg. Und zwar mit dem Argument start bzw. stop. Die links gehören im Verzeichnis /sbin/init.d/rc2.d würdes Du diesen Dienst auch gerne im Runlevel 3 ausführen, so gehört er auch nach /sbin/init.d/rc3.d usw. Nach dem S bzw. K kommt noch eine zweistellige Zahl, die besagt an welcher Stelle das Skript ausgeführt wird. Bernd -- Bitte die Etikette dieser Liste beachten: http://www.ndh.net/home/schult/ Bitte Realnamen angeben, kein Vollquoting, kein Html, PGP oder Visitenkarten benutzen. Signatur mit "-- " abtrennen, bei Antworten "Re: " voranstellen, sonst nichts. |Zufallssignatur 4 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Mon, 23 Okt 2000 schrieb Bernd Brodesser:
* ChristophR. schrieb am 23.Okt.2000:
Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind. Hat einer eine Idee, was ich da machen kann? (nicht in /etc/profile.local)
Wenn Du es im runlevel 2 starten willst, ist boot.local auch nicht der richtige Ort. boot.local wird nur nach dem booten, nicht aber nach einem runlevelwechsel gestartet.
Schreibe Dir ein Skript in /sbin/init.d. Dort gibt es ein skeleton. Kopier es Dir mit einem beliebigen aber noch nicht vergebenen Namen, und passe es an. Dann mache zwei links darauf. Einmal mit einem S davor und einmal mit einem K. Mit dem S davor wird bei einem wechsel zu runlevel 2 ausgeführt und mit einem K davor bei einem runlevelwechsel von 2 weg. Und zwar mit dem Argument start bzw. stop. Die links gehören im Verzeichnis /sbin/init.d/rc2.d würdes Du diesen Dienst auch gerne im Runlevel 3 ausführen, so gehört er auch nach /sbin/init.d/rc3.d usw.
Nach dem S bzw. K kommt noch eine zweistellige Zahl, die besagt an welcher Stelle das Skript ausgeführt wird.
ich habe da aber noch ein Problem: Ich möchte erreichen, dass ein Perl-Script gestartet wird. Dass geht aber irgendwie nur, wenn ich es mit "perl progname.pl" starte - ein "progname.pl" funktioniert nicht. Wie kann ich dass jetzt init mitteilen? Wenn ich in dem Startscript einfach ein "perl" vor das zu startende Programm hänge, versucht init nur "perl" auszuführen. Was kann ich hier tun? MfG ChristophRaucher --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 24-Oct-2000 ChristophR. wrote:
Wenn ich in dem Startscript einfach ein "perl" vor das zu startende Programm hänge, versucht init nur "perl" auszuführen. Was kann ich hier tun?
Was hast Du denn schon versucht? Ich wuerde es einfach mal mit
einem "perl programmname", also alles in Anfuehrungszeichen,
probieren.
Gruss,
Heinz.
--
E-Mail: Heinz W. Pahlke
On Die, 24 Okt 2000, Heinz W. Pahlke wrote:
On 24-Oct-2000 ChristophR. wrote:
Wenn ich in dem Startscript einfach ein "perl" vor das zu startende Programm hänge, versucht init nur "perl" auszuführen. Was kann ich hier tun?
Was hast Du denn schon versucht? Ich wuerde es einfach mal mit einem "perl programmname", also alles in Anfuehrungszeichen, probieren.
Oder als erste Zeile: #!/usr/bin/perl -w Gruß Christoph -- Christoph Maurer Jülicher Str. 80 - 52070 Aachen mailto:christoph-maurer@gmx.de --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hallo, On Tue, Oct 24, 2000 at 12:24 +0200, Christoph Maurer wrote:
On Die, 24 Okt 2000, Heinz W. Pahlke wrote:
On 24-Oct-2000 ChristophR. wrote:
Wenn ich in dem Startscript einfach ein "perl" vor das zu startende Programm hänge, versucht init nur "perl" auszuführen. Was kann ich hier tun?
Was hast Du denn schon versucht? Ich wuerde es einfach mal mit einem "perl programmname", also alles in Anfuehrungszeichen, probieren.
Oder als erste Zeile: #!/usr/bin/perl -w
Dann aber die Ausführrechte nicht vergessen, genau wie bei einem Shellscript. Gruß, Bernhard -- **** LINUX - WeilŽs Betriebssystem eben ned wurscht is **** Homepage: http://www.linuxinfopage.de * Reg. User #: 171705 --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
so aber mein Script wird nicht autom. von init aufgerufen! Wenn ich es manuel starte ("/sbin/init.d/myscript") läuft es (Kontrolle mit ps). Ich habe 2 Links in "/sbin/init.d/r2.d/": S98myscript und K98myscript. Hier der Anfang des Scriptes: #! /bin/sh # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. # # Author: # # /sbin/init.d/<skeleton> # # and symbolic its link # # /sbin/rc<skeleton> # .. /etc/rc.status #. /etc/rc.config # Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*[SK][0-9][0-9]} # Force execution if not called by a runlevel directory. test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0 # Shell functions sourced from /etc/rc.status: # rc_check check and set local and overall rc status # rc_status check and set local and overall rc status # rc_status -v ditto but be verbose in local rc status # rc_status -v -r ditto and clear the local rc status # rc_failed set local and overall rc status to failed # rc_reset clear local rc status (overall remains) # rc_exit exit appropriate to overall rc status # First reset status of this service rc_reset case "$1" in start) echo -n "Starting service myscript" ## Start daemon with startproc(8). If this fails ## the echo return value is set appropriate. startproc /home/user4/myscript.pl & # Remember status and be verbose rc_status -v ;; stop) Wo könnte der Fehler liegen? Grüße ChristophRaucher --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
From: "ChristophR."
so aber mein Script wird nicht autom. von init aufgerufen! Wenn ich es manuel starte ("/sbin/init.d/myscript") läuft es (Kontrolle mit ps). Ich habe 2 Links in "/sbin/init.d/r2.d/": S98myscript und K98myscript. Hier der Anfang des Scriptes:
#! /bin/sh # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. # # Author: # # /sbin/init.d/<skeleton> # # and symbolic its link # # /sbin/rc<skeleton> #
.. /etc/rc.status #. /etc/rc.config
# Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory. test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0
Hallo, fehlt noch in der rc.config Eintrag am Ende START_MYSCRIPT="yes" SuSEconfig, und startet es auch automatisch MfG Christian Kupka --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Hi, On Tue, Oct 24 2000 at 19:03 +0200, Christian Kupka wrote:
fehlt noch in der rc.config Eintrag am Ende
START_MYSCRIPT="yes"
SuSEconfig, und startet es auch automatisch
SuSEconfig ist hier nicht nötig. Ciao, Stefan --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
ChristophR. schrieb am 24.10.2000 um 18:34:47 +0200: Hallo ChristophR.,
so aber mein Script wird nicht autom. von init aufgerufen! Wenn ich es manuel starte ("/sbin/init.d/myscript") läuft es (Kontrolle mit ps). Ich habe 2 Links in "/sbin/init.d/r2.d/": S98myscript und K98myscript. Hier der Anfang des Scriptes:
#! /bin/sh
[...]
.. /etc/rc.status
teht da normalerweise nicht ein . ?
#. /etc/rc.config
warum hast Du das auskommentiert?
# Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory. test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0
hast Du eine Variable namens START_MYSCRIPT auf yes gesetzt? Erweitere mal Deine /etc/rc.config um folgenden Eintrag START_MYSCRIPT="yes" Obwohl ich jetzt nicht weis ob SuSE die rc.config bei einem Update nicht einfach überschreibt? Leg Dir ein /etc/rc.config.local an und schreib es da rein. Dann mußt Du oben halt noch . /etc/rc.config.local hinschreiben. Bis denne, Michael -- "Drums, guitar and Death. They finally got it right." Beavis & Butthead --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
Am Die, 24 Okt 2000 schrieb Michael Schulz:
ChristophR. schrieb am 24.10.2000 um 18:34:47 +0200:
Hallo ChristophR.,
so aber mein Script wird nicht autom. von init aufgerufen! Wenn ich es manuel starte ("/sbin/init.d/myscript") läuft es (Kontrolle mit ps). Ich habe 2 Links in "/sbin/init.d/r2.d/": S98myscript und K98myscript. Hier der Anfang des Scriptes:
#! /bin/sh
[...]
.. /etc/rc.status
steht da normalerweise nicht ein . ?
#. /etc/rc.config
warum hast Du das auskommentiert?
# Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory. test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0
hast Du eine Variable namens START_MYSCRIPT auf yes gesetzt? Erweitere mal Deine /etc/rc.config um folgenden Eintrag START_MYSCRIPT="yes"
das war der Fehler.
Obwohl ich jetzt nicht weis ob SuSE die rc.config bei einem Update nicht einfach überschreibt? Leg Dir ein /etc/rc.config.local an und schreib es da rein. Dann mußt Du oben halt noch . /etc/rc.config.local hinschreiben. Bis denne,
MfG ChristophRaucher --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
On 24 Oct 2000, at 18:34, ChristophR. wrote:
so aber mein Script wird nicht autom. von init aufgerufen! Wenn ich es manuel starte ("/sbin/init.d/myscript") läuft es (Kontrolle mit ps). Ich habe 2 Links in "/sbin/init.d/r2.d/": S98myscript und K98myscript. Hier der Anfang des Scriptes:
[...]
.. /etc/rc.status
^ FALSCH!!!
#. /etc/rc.config
# Determine the base and follow a runlevel link name. base=${0##*/} link=${base#*[SK][0-9][0-9]}
# Force execution if not called by a runlevel directory. test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0 Wo könnte der Fehler liegen?
Vermutung: Dein Skript wird wunderbar ausgeführt; macht nur leider (fast) nix! Dein Fehler: Im Originalfile müßte stehen ". scriptname". Dies führt das skript "scriptname" in der aktuellen Shell aus, damit die Variablen, die in rc.config gesetzt werden, auch im Skript gesetzt sind. Wenn Du das ohne Punkt ausführst, dann wird das skript in einer Subshell ausgeführt. Dort kannst Du Variablen setzen bis Du schwarz wirst (oder weiß, falls Du schon schwarz bist; oder grün, falls Du gelb bis; oder oder oder). Jedenfalls wird dein init-Skript dann nie was davon mitbekommen. Du hast dort stehen ".. scriptname", was (Vermutung) das skript gar nicht ausführt. Jedenfalls wird dann in den Zeilen
test $link = $base && START_MYSCRIPT=yes test "$START_MYSCRIPT" = yes || exit 0
die Variable START_MYSCRIPT für leer befunden und ein exit 0 ausgeführt. Wenn Du das Skript interaktiv startest, wird in der oberen Zeile hingegen START_MYSCRIPT gesetzt und alles geht. Andreas PS: Du mußt natürlich in /etc/rc.status dein Variable START_MYSCRIPT auf yes setzen. Nicht in /etc/rc.config, da du diese Datei nicht sourced. (Blödes Wort, aber ich weiß kein besseres) --------------------------------------------------------------------- To unsubscribe, e-mail: suse-linux-unsubscribe@suse.com For additional commands, e-mail: suse-linux-help@suse.com
"ChristophR." wrote:
Am Mon, 23 Okt 2000 schrieb Bernd Brodesser:
* ChristophR. schrieb am 23.Okt.2000:
Ich möchte einen Dienst nach init 2 starten. Ich kann ihn aber nicht in boot.local eintragen, weil boot.local schon vorher ausgeführt wird und die für das zu startende Programm verfügbaren Dienste noch nicht alle gestartet sind. Hat einer eine Idee, was ich da machen kann? (nicht in /etc/profile.local)
Wenn Du es im runlevel 2 starten willst, ist boot.local auch nicht der richtige Ort. boot.local wird nur nach dem booten, nicht aber nach einem runlevelwechsel gestartet.
Schreibe Dir ein Skript in /sbin/init.d. Dort gibt es ein skeleton. Kopier es Dir mit einem beliebigen aber noch nicht vergebenen Namen, und passe es an. Dann mache zwei links darauf. Einmal mit einem S davor und einmal mit einem K. Mit dem S davor wird bei einem wechsel zu runlevel 2 ausgeführt und mit einem K davor bei einem runlevelwechsel von 2 weg. Und zwar mit dem Argument start bzw. stop. Die links gehören im Verzeichnis /sbin/init.d/rc2.d würdes Du diesen Dienst auch gerne im Runlevel 3 ausführen, so gehört er auch nach /sbin/init.d/rc3.d usw.
Nach dem S bzw. K kommt noch eine zweistellige Zahl, die besagt an welcher Stelle das Skript ausgeführt wird.
ich habe da aber noch ein Problem: Ich möchte erreichen, dass ein Perl-Script gestartet wird. Dass geht aber irgendwie nur, wenn ich es mit "perl progname.pl" starte - ein "progname.pl" funktioniert nicht. Wie kann ich dass jetzt init mitteilen?
Wenn ich in dem Startscript einfach ein "perl" vor das zu startende Programm hänge, versucht init nur "perl" auszuführen. Was kann ich hier tun? Generell: chmod +x progname.pl
Aus Sicherheitsgründen würde ich dies hier aber nicht tun, sondern
perl und das Skript mit absoluten Pfaden starten, also etwas in der
Art in /sbin/init.d/<mein-script> verwenden:
...
test -x /usr/bin/perl \
&& /usr/bin/perl
participants (10)
-
Andreas.Kyek@d2mannesmann.de
-
B.Brodesser@online-club.de
-
Bernhard.Walle@gmx.de
-
christoph-maurer@gmx.de
-
ckupka@meinberlin.de
-
corsepiu@faw.uni-ulm.de
-
h.pahlke@berlin.de
-
micha28@gmx.de
-
stefan.troeger@wirtschaft.tu-chemnitz.de
-
xmail@gmx.li