Daemons (Task)

KArLHEinZ

Newbie
Registriert
März 2002
Beiträge
7
So wie kann man Programme so wie Samba einstellen so das man in der rc.conf so wei bei samba schreiben kann smb... yes und Samba wir dann automatisch beim booten gestartet???
Also eine neuen Daemon(Task) erstellen???
 
Ähm, das ist sehr schwierig, da die rc.config (ab SuSE 8.0 nicht mehr vorhanden) ein Eigengewächs von SuSE ist.
Das heißt, dass die Skripte, die die rc.config auswerten, auch von SuSE sind und selbst für meine Begriffe nur sehr schwer zu durchschauen sind.

Wenn es "nur" irgendein popeliges kleines Programm ist, kann dein Programm auch über die /etc/init.d/boot.local gestartet werden. Diese Datei wird jedesmal beim Booten ausgeführt und kann beliebige Befehle enthalten (z.B. ein bestimmtes Programm starten). Sie stellt so etwas ähnliches wie "Autostart" unter Windows dar. Einfach die Datei editieren.

Besser ist es aber ein Startskript selbst zu schreiben und dieses dann in den entsprechenden Runleveln ausführenn zu lassen.
Wenn du hierzu Fragen hast melde dich einfach nochmal. Dann bekommst du den Schnellkurs "Runlevels und Startskripte" reingedrückt :D.

Gruß Boron
 
Bei mir ise noch da bei 7.3 aber das mit der boot.local klappt nich :( , dann muss ich wohl oder übel ein eigenes Bootscript schreiben.
Hilfe brauche
Dann bekommst du den Schnellkurs "Runlevels und Startskripte" reingedrückt .
 
Welches Programm willst du denn eigentlich starten lassen?
Bevor ich mir die Finger wund schreibe frage ich mal nach weiteren Infos.
 
Für nen Halflife Server einfach anschalten und zocken ohne Monitor ohne Maus ohne ssh. Zu zu sagen ein Plug & Play Server.
 
Jetzt weiß ich zwar immer noch nicht, welches Programm du starten willst, aber was solls.

Bitte lesen. Dies ist Basiswissen für eine erfolgreiche Linux-Zukunft ;)
Nicht abschrecken lassen.

Crashkurs:

- Linux hat insgesamt 6 Runlevels. Also 6 verschiedene Betriebsmodi sozusagen. Bei SuSE sind die wie folgt definiert:
Code:
Runlevel 0  ist  System halt
Runlevel 1  ist  Single user mode
Runlevel 2  ist  Multiuser ohne Netzwerk (z.B. NFS)
Runlevel 3  ist  Multiuser mit Netzwerk
Runlevel 4  ist  unbenutzt
Runlevel 5  ist  Multiuser mit Netzwerk und xdm
Runlevel 6  ist  System reboot
Wenn dein System gleich ins X-Window-System bootet (also gleich eine grafische Oberfläche präsentiert) dann ist dein Standardmodus das Runlevel 5. Wenn du im Textmodus landest, dann ist der Standardmodus Runlevel 3. Die Restlichen werden eingentlich selten gebraucht, außer 0 und 6 (klar ;) ).

- In jedem Runlevel werden bestimmte Skripte gestartet, die dann dein System betriebsbereit machen. Z.B. wird im Runlevel 3 das Netzwerk-Skript gestartet aber in Runlevel 2 nicht.

- Die Skripte liegen im Verzeichnis "/etc/init.d". Dort hat es noch Unterverzeichnisse rc0.d bis rc6.d. In diesen Verszeichnissen liegen Links auf die Skripte. Und zwar auf genau die Links, die gestartet und beendet werden sollen.

Es gibt Links, die beginnen mit einem "S". Diese Starten etwas.
Es gibt Links, die beginnen mit einem "K". Diese Killen (also beenden) etwas.
Die Zahlen dahinter geben die Reihenfolge an.

Ende des Crashkurses

Jetzt beginnen wir mit deinem Problem (endlich :daumen:):

- In "etc/init.d" hat es eine Datei namens "skeleton". Diese Datei ist nur ein Grundgerüst für eigene Startskripte.

- Wechsle nach /etc/init.d

- Kopiere die Datei mit einem neuem Namen in selbe Verzeichnis, also mit "cp skeleton deinSkript (deinSkript ersetzen mit dem Dateinamen den du dem Skript geben willst).

- Jetzt wird es witzig :). Öffne mit einem Editor deiner Wahl deinSkript.

- Du siehst weiter unter ein "case "$1" in". Darunter zwei Abschnitte start) und stop).
In beiden Abschnitten werden wir jetzt etwas rumeditieren.

- Schreibe anstelle "Starting FOO" "Starting deinProgramm" (wieder mit deinem Programmnamen ersetzen). Äquivalent mit "Shutting down" verfahren.

- Dort wo "startproc $FOO_BIN" und "killproc -TERM $FOO_BIN" steht ersetzst du $FOO_BIN mit "/pfad/zu/deinProgramm".

Ah nein, bessere Idee. Ersetze überall in deinem Skript $FOO_BIN mit "/pfad/zu/deinProgramm", und nach den echo-Anweisungen die FOOs mit deinProgrammname.

Puh, kleine Pause :schaf:

Und weiter geht's.

- Jezt brauchen wir in den rcx.d Verzeichnissen noch Links (du erinnerst dich :)).

- Was jetzt kommt machst du in rc3.d und rc5.d.

- Wechsle nach rc3.d. Mit dem Befehl
Code:
ln -s ../deinSkript S99deinSkript
erstellst du den Link zum Starten.
Mit
Code:
ln -s ../deinSkript K01deinSkript
erstellst du den Link zum Beenden.

- Auf nach rc5.d. Hopp, hopp.

Fertig!!!!!

Melde dich bei Fragen und Problemen.
Nicht abschrecken lassen.

Gruß Boron
 
Zuletzt bearbeitet:
Original erstellt von Boron
...
Das heißt, dass die Skripte, die die rc.config auswerten, auch von SuSE sind und selbst für meine Begriffe nur sehr schwer zu durchschauen sind.

Wenn es "nur" irgendein popeliges kleines Programm ist, kann dein Programm auch über die /etc/init.d/boot.local gestartet werden. Diese Datei wird jedesmal beim Booten ausgeführt und kann beliebige Befehle enthalten (z.B. ein bestimmtes Programm starten). Sie stellt so etwas ähnliches wie "Autostart" unter Windows dar. Einfach die Datei editieren.

...

Also heisst das man nur: "START_SMB = YES" in die
/etc/init.d/boot.local eingeben muss, um Samba jedesmal
zu starten ?
 
@itfneo
Nein nein!!
In die boot.local kannst echte Befehle reinschreiben.

Du könntest somit z.B. ein bestimmtest Kernelmodul laden.
Angenommen du hast ein Board mit VIA-Chipsatz, und du willst auch unter Linux die Hardwaresensoren auslesen (Temperaturen, Drehzahlen der Lüfter und Spannungen), so muss das Kernelmodul "via686a" geladen werden.
Damit du das nicht immer von Hand laden musst, kannst du in die boot.local schreiben "modprobe via686a" und es wird automagisch gemacht.

"START_SMB = YES" ist ja kein gültiger Linux-Befehl und kann somit auch nicht ausgeführt werden.
In diesem Fall würde Linux START_SMB als eine Variable in diesem Script ansehen und ihr den Wert YES zuweisen.
Deshalb wird aber Samba nicht gestartet. Das wird bei jeder Distribution über ein Startscript gemacht.
 
Und wo kann ich dann Samba bei jedem Start,
starten lassen ? Welche Datei muss ich dafür
editieren ?
 
Da ich nicht weiß welche Distribution du verwendest kann ich das jetzt schlecht sagen.

Bei SuSE gibt es in yast2 irgendwo irgendwas.
Bei Mandrake gibt es im "Mandrake Kontrollzentrum" unter System -> Dienst einen Punkt zu Samba, sofern dieses installiert ist.
Mit RedHat kenne ich mich nicht aus.
 
Wie bereits erwähnt. Yast2 hat garantiert auch irgendwo einen Dialog versteckt, in dem du angeben kannst welche Dienste beim Booten gestartet werden sollen und welche nicht.

Selbst benutze ich Mandrake 9, so dass ich dir nicht genau sagen kann wo du das findest.
 
Zurück
Oben