Script beim Systemstart laden (SUSE 10.2) [erledigt]

Hi!

Ich habe Linux jetzt seit recht kurzer Zeit und fühle mich hier jetzt richtig heimisch :D.

Ich habe eine G15 Tastatur und dieses Script auch zum laufen gebracht.
Jetzt muss ich nach jedem Neustart in die Konsole wechseln und als su einmal "g15daemon" eingeben und anschließend das Script aufrufen.
Ich habe versucht beides in die etc/init.d/boot.local einzugeben, was auch funktioniert hat - Nur startete dann mein Rechner nicht mehr weiter. Der blieb beim Booten hängen - das Display dagegen funktionierte. So falsch kann das also nicht gewesen sein ^^. erst nachdem ich die Zeile mit einer Knoppix CD wieder gelöscht hatte startete mein rechner wieder.

Könnt ihr einen Linux Neuling erklären, wie man das richtig beim Systemstart ausführen lässt?

Danke,
Maulwurf
 
funktioniert denn der befehl

Code:
rc-update add g15daemon default

unter suse? so fügt man zumindest immer dienste zum systemstart hinzu
 
hmm .. auf die schnelle hab ich bei google dafür keine alternative gefunden .. jedoch sollte suse, so komfortabel wie es ist, doch bestimmt irgendwelche grafischen tools bereitstellen, womit man die dienste konfigurieren kann?
 
Hast du mal probiert, in der /etc/init.d/boot.local hinter die jeweiligen Befehle ein & zu schreiben?
Also dann "sh script.sh &" (oder wie auch immer das Script heißen mag, habs mir nicht genauer angeschaut).
 
nein, aber es funktioniert ja auch wenn ich es in die boot.local hineinschreibe. ABER: Linux startet dann nicht mehr weiter, sonder führt beim Bootvorgang an der stelle nur noch das Script aus, weil es eins ist, dass sich im Intervall von 3sec immer wieder aktualisiert (zeigt mir halt die Uhrzeit auf dem Tastaturmonitor an). Wenn ich es aber in SUSE direkt aufrufe funktioniert es ohne Probleme und läuft im Hintergrund. Das möchte ich jetzt einfach automatisieren.

Maulwurf
 
1.

Die boot.local würde ich für sowas nicht nehmen.

Eigentlich ist für sowas /etc/init.d/rc.local verantwortlich.

Die Novell-Idioten haben natürlich wieder mal was eigenes gemacht, deshalb gibt es die so nicht mehr.

2.

rc-update add g15daemon default

Nein, das wird so nicht funktionieren, zumindest nicht unter Suse.

Code:
chkconfig --add /etc/init.d/dein_script 35

sollte klappen.

3.

nein, aber es funktioniert ja auch wenn ich es in die boot.local hineinschreibe. ABER: Linux startet dann nicht mehr weiter, sonder führt beim Bootvorgang an der stelle nur noch das Script aus, weil es eins ist, dass sich im Intervall von 3sec immer wieder aktualisiert (zeigt mir halt die Uhrzeit auf dem Tastaturmonitor an).

Ja, das haben wir verstanden.

Deshalb solltest du ein "&" hinter den Aufruf hängen. Ansonsten blockt dein script den weiteren Boot-Vorgang.
 
Ich würde einfach empfehlen ein init-Skript zu erstellen, dieses dann in /etc/init.d/ abzulegen, ausführbar machen und mit einem Runlevel-Editor (z.B. 'yast runlevel') zu aktivieren. In der boot.local rumzupfuschen, wenn man keine Ahnung hat, ist jedenfalls keine gute Idee. Der Aufbau eines Init-Skripts ist folgender:

Code:
#!/bin/bash

echo "Starting my services"

case "$1" in
start)
  # hier kommen alle Befehle rein, die beim Booten ausgeführt werden sollen
  ;;
stop)
  # hier kommen alle Befehle rein, die beim Runterfahren ausgeführt werden sollen
  ;;
*)
  echo "Usage: `basename $0` {start|stop}" >&2
  exit 64
  ;;
esac

exit 0
 
Heute bin ich jetzt endlich dazu gekommen den Vorschlag von Bitmuncher auszuprobieren. Ich habe 2 Scripte erstellt und in /etc/init.d/ abgelegt. Auch das aufrufen mit dem Runlevel Editor lief gut - ich konnte sie aber nicht aktivieren. Als Fehlermeldung kam immer dies hier zurück:
Code:
* gab 126 (Fehler nicht spezifiziert) zurück

Was habe ich falsch gemacht?

Das hier sind meine 2 Scripte:

1:
Code:
#!/bin/bash

echo "Starte den G15 Daemon Service"

case "$1" in
start)
  # hier kommen alle Befehle rein, die beim Booten ausgeführt werden sollen
g15daemon
  ;;
stop)
  # hier kommen alle Befehle rein, die beim Runterfahren ausgeführt werden sollen
g15daemon -k
  ;;
*)
  echo "Usage: `basename $0` {start|stop}" >&2
  exit 64
  ;;
esac

exit 0

und 2:
Code:
#!/bin/bash

echo "Starte das Script fuer die G15 - Tastatur"

case "$1" in
start)
  # hier kommen alle Befehle rein, die beim Booten ausgeführt werden sollen
/usr/bin/g15disp-new
  ;;
stop)
  # hier kommen alle Befehle rein, die beim Runterfahren ausgeführt werden sollen
  ;;
*)
  echo "Usage: `basename $0` {start|stop}" >&2
  exit 64
  ;;
esac

exit 0

(wahrscheinlich hab ich irgendwas richtig dummes gemacht - aber das hier sind meine ersten Scripts :D)
 
Du solltest evtl. oben in den Skripten die PATH-Variable korrekt setzen. Im übrigen kannst du die Skrupte auch zu einem zusammenfassen. Außerdem wurde dir schonmal gesagt, daß du ein &-Zeichen an die Befehle anhängen sollst, damit der Boot-Prozess nicht unterbrochen wird.
 
oh, ok das & habe ich komplett vergessen. Ich habe beide in eins zusammengefasst.

Code:
#!/bin/bash

echo "Starte das Script fuer die G15 - Tastatur"

case "$1" in
start)
  # hier kommen alle Befehle rein, die beim Booten ausgeführt werden sollen
g15daemon&
/usr/bin/g15disp-new&
  ;;
stop)
  # hier kommen alle Befehle rein, die beim Runterfahren ausgeführt werden sollen
g15daemon -k&
  ;;
*)
  echo "Usage: `basename $0` {start|stop}" >&2
  exit 64
  ;;
esac

exit 0

Aber die Path-Variable verstehe ich nicht. Habe ich nicht mit /usr/bin/* den richtigen Pfad gesetzt?
 
Schreib in die zweite Zeile des Skripts:

Code:
PATH=/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/usr/local/sbin

Kann ja sein, daß eines der Programme noch andere Programme aufruft.
 
hm... das habe ich jetzt gemacht und es kommt immer noch im runlevel editor die fehlermeldung

Code:
/etc/init.d/g15script start gab 126 (Fehler nicht spezifiziert) zurück:

vielleicht sollte ich doch alles einfach in die bootl.local eingeben (diesmal mit dem "&")
 
Das war der entscheidende Faktor :D Das Script war nicht ausführbar. Ich hab dem jetzt den richtigen chmod Status gegeben und kann es nun per hand ausführen.

Aber im Runlevel Editor kann ich es nicht aktivieren, da nun immer die Meldung

Code:
/etc/init.d/g15script start gab nil (Fehler nicht spezifiziert) zurück:
Starte das Script fuer die G15 - Tastatur
g15daemon is already running.  Use 'g15daemon -k' to kill the daemon before running again.
Exiting now

erscheint. Aber ich habe doch beim herunterfahren g15daemon -k eingegeben???
 
Du mußt vor dem Aktivieren im Runlevel-Editor den Daemon trotzdem nochmal stoppen, damit das Skript sauber gestartet werden kann. Die Runlevel-Editoren von SuSE (speziell 'yast runlevel') peilen das nämlich nicht, wenn ein Prozess bereits läuft. Du müßtest dann ein erweitertes Error-Handling einbauen.
 
Zurück
Oben