Thema geschlossen
Ergebnis 1 bis 5 von 5

Thema: (Gelöst) initd/rc5.d script anpassen

  1. #1
    cal
    cal ist offline
    Lehrling Avatar von cal
    Registriert seit
    17.03.2007
    Ort
    nahe Landau in der Pfalz
    Beiträge
    213

    Standard (Gelöst) initd/rc5.d script anpassen

    Hallo,
    ich versuche gerade ein shellscript das ich in die /etc/init.d/rc5.d von Debian edge 4.0r0 gelegt habe zum funktionieren zu bringen.
    Da ich davon nicht wirklich eine Ahnung habe bin ich nur am rumprobieren.
    Das Anwenderhandbuch schweigt sich dazu ziemlich aus oder ich suche mal wieder nicht unter den richtigen Stichwörtern.
    Die Anwendung die ich starten möchte ist "fancontrol". (Was ich damit unter SuSE 10.2 schon alles angestellt habe ist hier http://www.pc-forum24.de/stationaere...-new-post.html
    zu finden.)
    Was nicht funktioniert ist: "fancontrol" einfach an einer passenden Stelle in das script S25lm-sensors einzutragen.
    Fancontrol ist ein shellscript dessen Mainroutine hauptsächlich aus einer Endlosschleife besteht.
    D. h. wenn ich dies so mache bleibt der komplette init-Vorgang stehen und wartet darauf das Fancontrol fertig wird, was natürlich nie passiert.

    Jetzt versuche ich in diesem S25lm-sensors-script einen weiteren Prozess zu starten, der dann endlos weiterlaufen soll, während mein init-Vorgang regulär weiterläuft.

    Beim googlen bin ich dann auf "popen" gestoßen, aber dies scheint hier nicht zu funktionieren oder ich benutze "popen" falsch.
    Hier das komplette script:
    Code:
    #!/bin/sh
    
    
    
    
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    PROGRAM=/usr/bin/sensors
    
    test -x $PROGRAM || exit 0
    
    case "$1" in
      start)
        echo -n "Setting sensors limits:"
        /usr/bin/sensors -s 1> /dev/null 2> /dev/null
        /usr/bin/sensors 1> /dev/null 2> /dev/null
        echo " done."
    
        # Start fan control, 
          echo -n ", starting fan control: "
            popen(usr/sbin/fancontrol,"x")
        
    
        ;;
      stop)
        ;;
      force-reload|restart)
        $0 stop
        $0 start
        ;;
      *)
        echo "Usage: /etc/init.d/sensors {start|stop|restart|force-reload}"
        exit 1
    esac
    
    exit 0
    Es handelt sich um das normale "lm-sensors" von debian.
    Was ich dazu gewurschtelt habe ist rot geschrieben.
    Habe mich dabei zuerst versucht an SuSE anzulehnen, aber deren /sbin/startproc -q ... existiert bei debian nicht.

    Mein Verständnis von dem was ich da versuche beschränkt sich auf 25 Jahre alte und sehr rudimentäre "C" -Kenntnisse.

    Kann mir bitte jemand weiterhelfen?
    Grüße von der Südlichen Weinstraße
    Jürgen

    "Was nützt es dem Menschen wenn er Lesen und Schreiben gelernt hat, aber das Denken anderen überlässt"
    Ernst Reinhold Hauschka

    Auf Arbeitsplatte: SuSE 11.1 Kernel 2.6.27.7-9-pae ,KDE4.13, i586

    Testplatte: openSUSE 11.1
    2.6.27.7-9-default, KDE4.2, x86_64

    AMD 64x2 4600+; Asus A8N32-SLI; ATI X1900 GT;
    Technisat SkyStar2, 2GB RAM, Netgear WPN311 mit Atheros AR5212/AR5213, Canon IP5000

  2. #2
    Administrator Avatar von Rain_Maker
    Registriert seit
    06.02.2006
    Beiträge
    5,459

    Standard AW: initd/rc5.d script anpassen

    Ohne das Script jetzt genau durchgelesen zu haben ==> Erste Grundregel:

    In Initscripten sollte man ausfuehrbare Dateien immer mit _vollstaendigem_ Pfad aufrufen, sofern also "popen" eine ausfuehrbare Datei ist, sollte sie mit vollem Pfad aufgerufen werden, beim Auffinden des absoluten Pfades wird "which" Dein Freund sein.

    Greetz,

    RM
    "Programming today is a race between software engineers striving to build better & bigger idiot-proof programs and the Universe trying to produce bigger & better idiots. So far, the Universe is winning." (Rick Cook)

    Dies ist ein _öffentliches_ Supportforum, keinerlei Support per PN, EMail oder Instant Messenger.

    openSUSE 11.4 - 3.3.X-desktop - fluxbox 1.3.2

    For Windows-Problems - Reboot / For Linux-Problems - BE ROOT!
    (==> Und hier das wirkliche "Geheimnis meines Erfolges")

  3. #3
    cal
    cal ist offline
    Lehrling Avatar von cal
    Registriert seit
    17.03.2007
    Ort
    nahe Landau in der Pfalz
    Beiträge
    213

    Standard AW: initd/rc5.d script anpassen

    Hallo Rain Maker,

    Danke für den Hinweis.

    Ich hielt "popen()" für ein shell-kommando ähnlich wie "echo"...
    Dies scheint aber nicht der Fall zu sein und which liefert kein Ergebnis.

    Die meisten Seiten die ich durchsucht hatte waren mal wieder in englisch und mein Problem ist daß ich Englisch nicht gut genug verstehe um immer alle Zusammenhänge zu begreifen. -Nicht daß ich das in deutsch immer würde-
    Es kann also gut sein daß ich da auf einer Seite für was weiss ich was für eine Sprache gelandet war und dies nicht bemerkt habe.

    Ich suche eigentlich nach einem Äquivalent zu SuSE´s "startproc" , was bei Debian wohl mit dem Start-Stop-Daemon gehandhabt wird (wenn ichs soweit richtig verstanden habe). Nur ob und wie ich den dazu benutzen könnte finde ich nicht heraus.
    Grüße von der Südlichen Weinstraße
    Jürgen

    "Was nützt es dem Menschen wenn er Lesen und Schreiben gelernt hat, aber das Denken anderen überlässt"
    Ernst Reinhold Hauschka

    Auf Arbeitsplatte: SuSE 11.1 Kernel 2.6.27.7-9-pae ,KDE4.13, i586

    Testplatte: openSUSE 11.1
    2.6.27.7-9-default, KDE4.2, x86_64

    AMD 64x2 4600+; Asus A8N32-SLI; ATI X1900 GT;
    Technisat SkyStar2, 2GB RAM, Netgear WPN311 mit Atheros AR5212/AR5213, Canon IP5000

  4. #4
    Lehrling
    Registriert seit
    08.08.2006
    Beiträge
    226

    Standard AW: initd/rc5.d script anpassen

    1. Die Init-Scripte liegen unter /etc/init.d.
    Unter /etc/init.d/rcX.d liegen nur die Symlinks auf die jeweiligen Scripte in der Form
    Code:
    [K,S]NN<Name>
    K steht dabei für Stop (Verlassen des Runlevels), S für Start (Starten des Runlevels), NN für die Reihenfolge in der die Scripte gestartet bzw. gestoppt werden und <Name> ist einfach der Dateiname des Scriptes.
    Siehe: man init, man update-rc.d

    2. Der Default-Runlevel unter Debian ist 2 nicht 5.

    3. Zum starten eines Daemons gibt es das Programm start-stop-daemon.

    4. popen() ist eine C-Funktion, keine Shell-Funktion.
    D.h. du kannst diese Funktion nur innerhalb eines C-Programms benutzen, nicht in einem Init-Script.

    5. Existierende Scripte zu verändern halte ich nicht unbedingt für eine gute Idee.
    Mach ein Kopie des Scripts und erstell dir auf der Basis ein eigenes lm-sensors-Script.


    Du solltest dir auf jeden Fall einmal das Beispielscript /etc/init.d/skeleton ansehen.
    Gruß b3ll3roph0n
    --
    Denken hilft !

    Für alle meine Beiträge gelten, außer bei Zitaten, die Creative Commons.

  5. #5
    cal
    cal ist offline
    Lehrling Avatar von cal
    Registriert seit
    17.03.2007
    Ort
    nahe Landau in der Pfalz
    Beiträge
    213

    Daumen hoch AW: initd/rc5.d script anpassen

    Hallo b3ll3roph0n,

    1) War bekannt, nur von mir wohl zu verkürzt wiedergegeben
    2) Runlevel für x = 5
    3) Man start-stop-daemon hat schließlich doch noch weitergeholfen
    4) Tja, lesen und verstehen....
    5) script "/etc/init.d/lm-sensors" war unbenutzt, habe mit Kopie gewurschtelt.

    Mit dem "skeleton" zum selbererstellen bin ich überfordert. Es reicht mit Glück halt grad mal zum abändern von bereits funktionierendem.

    Fancontrol läuft jetzt wie gewünscht kurz vorm login an.

    So sieht das script jetzt aus:
    Code:
    #!/bin/sh
    
    
    
    
    PATH=/bin:/usr/bin:/sbin:/usr/sbin
    PROGRAM=/usr/bin/sensors
    
    test -x $PROGRAM || exit 0
    
    case "$1" in
      start)
        echo -n "Setting sensors limits:"
        /usr/bin/sensors -s 1> /dev/null 2> /dev/null
        /usr/bin/sensors 1> /dev/null 2> /dev/null
        echo " done."
    
        # Start fan control, 
          echo -n ", starting fan control: "
          start-stop-daemon -S -b --exec /usr/sbin/fancontrol
    
        # wait 5
    
        
    
        ;;
      stop)
        ;;
      force-reload|restart)
        $0 stop
        $0 start
        ;;
      *)
        echo "Usage: /etc/init.d/sensors {start|stop|restart|force-reload}"
        exit 1
    esac
    
    exit 0
    Änderungen am Original-Script in rot.

    Vielen Dank für eure Hilfe

    gelöst, bitte schließen
    Grüße von der Südlichen Weinstraße
    Jürgen

    "Was nützt es dem Menschen wenn er Lesen und Schreiben gelernt hat, aber das Denken anderen überlässt"
    Ernst Reinhold Hauschka

    Auf Arbeitsplatte: SuSE 11.1 Kernel 2.6.27.7-9-pae ,KDE4.13, i586

    Testplatte: openSUSE 11.1
    2.6.27.7-9-default, KDE4.2, x86_64

    AMD 64x2 4600+; Asus A8N32-SLI; ATI X1900 GT;
    Technisat SkyStar2, 2GB RAM, Netgear WPN311 mit Atheros AR5212/AR5213, Canon IP5000

Thema geschlossen

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87