Wie kann man Dienste selber schreiben und diese als Solche einbinden?



  • Guten Tag Gemeinde!

    Mich würde interessieren wie man Linuxdienste programmiert. Sind das gewöhnliche Programme oder spezielle wie kernel-module? Wie sorge ich dafür, dass ein Dienst als solcher auf dem Zielrechner installiert wird? Kennt jemand gute Quellen?



  • EDIT: Also ich meine solche Dienste, wie sie in /etc/init.d/ anzutreffen sind



  • in /etc/init.d befinden sich nur Shell-Scripte, die irgend welche Programme starten. (mach einfach mal less /etc/init.d/<name>). Dienste als eigenes Konzept existieren in Linux nicht.

    Vielleicht solltest du dir auch mal anschauen was ein Daemon ist (siehe FAQ).



  • rüdiger schrieb:

    in /etc/init.d befinden sich nur Shell-Scripte, die irgend welche Programme starten. (mach einfach mal less /etc/init.d/<name>). Dienste als eigenes Konzept existieren in Linux nicht.

    Vielleicht solltest du dir auch mal anschauen was ein Daemon ist (siehe FAQ).

    thx, das wollt ich wissen.



  • Ach noch eine Frage: Wenn ich nach /etc/init.d ein eigenes_script.sh reinkopiere, wird se dann automatisch ausgeführt?



  • nein, du musst noch klarstellen in welchem runlevel dein programm gestartet werden soll. dazu erstellst du in dem ordner /etc/rc.d* ein link auf das shell-script in /etc/init.d. * steht für das runlevel (http://de.wikipedia.org/wiki/Runlevel).

    mfg blan



  • Reicht es ein script nach /etc/init.d zu kopieren oder muss ich noch irgendwelche Einträge in anderen Dateien vornehmen damit es bei einem PC start startet?



  • blan schrieb:

    nein, du musst noch klarstellen in welchem runlevel dein programm gestartet werden soll. dazu erstellst du in dem ordner /etc/rc.d* ein link auf das shell-script in /etc/init.d. * steht für das runlevel (http://de.wikipedia.org/wiki/Runlevel).

    mfg blan

    Thx! Kurze Frage: Wie schaut es mit /etc/init.d/bootmisc.sh aus?



  • blan schrieb:

    nein, du musst noch klarstellen in welchem runlevel dein programm gestartet werden soll. dazu erstellst du in dem ordner /etc/rc.d* ein link auf das shell-script in /etc/init.d. * steht für das runlevel (http://de.wikipedia.org/wiki/Runlevel).

    mfg blan

    Die links in rc*.d, warum haben die alle ein S<nummer> am Anfang? (bzw ein K<nummer>)

    Soweit ich mich informiert habe steht S für Startscript und K für Stopscript.

    Aber wie verteilt man die nummern?



  • Dienstleistungssektor schrieb:

    Die links in rc*.d, warum haben die alle ein S<nummer> am Anfang? (bzw ein K<nummer>)

    Soweit ich mich informiert habe steht S für Startscript und K für Stopscript.

    Aber wie verteilt man die nummern?

    soweit ich weiss sind die nummern für die reihenfolge verantwortlich.

    mfg blan



  • Müssen die dateien in /etc/init.d shellscripte sein? Oder können es auch perl, python, ruby scripte sein oder gar C/C++ Programme?



  • DLS schrieb:

    Müssen die dateien in /etc/init.d shellscripte sein? Oder können es auch perl, python, ruby scripte sein oder gar C/C++ Programme?

    es muss sich nur um eine ausführbare datei handeln. bei einem python-script sollte die zeile

    #!/usr/bin/env python
    

    helfen es ausführbar zu machen. ich habe es aber noch nicht ausprobiert,

    mfg blan



  • DLS schrieb:

    Müssen die dateien in /etc/init.d shellscripte sein? Oder können es auch perl, python, ruby scripte sein oder gar C/C++ Programme?

    Das kommt auf deine Linux-Distribution an. Es könnte auch sein, dass es Shell-Skripte sein müssen. Es kann genauso gut sein, dass es kein /etc/init.d Verzeichnis bei deiner Distribution gibt.



  • Im Prinzip ist es egal, was man in /etc/init.d kopiert, da können auch binaries vorhanden sein. Die Datei muss halt ausführbar sein und ein link auf /etc/rc.X muss vorhanden sein.

    Bei den meisten Distributionen gibt es entsprechende Packete, die bei der Verwaltung der init.d-Skripte helfen, sprich, wann sie gestartet werden, usw. Am besten ist es, die von Distribution gelieferten Mitteln zu benutzen, denn sie stellen sicher, dass die init.d-Skripte auf deinem System richtig gestartet werden.



  • Ihr schildert alle gerade SysV-Init - bei rgooch-Init oder initng oder... ist das wieder ein wenig anders.

    Das Starten von Diensten ist Distrosache, da stellt man als Maintainer des Daemons nur ein paar Samples (ggf start-stop-daemon ansehen) zur Verfügung und gut is.


Anmelden zum Antworten