Runlevelskript wird nach einem Reboot nicht ausgeführt, manuell klappt alles

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich habe schon den Beitrag "Automatisches Starten von Scripten" gelesen, mich aber dennoch entschieden einen neuen Beitrag zu schreiben, da mein Skript einfach nicht ausgeführt wird und ich nicht verstehe warum.

    Das Skript, welches ich nachfolgend unten gerne ebenfalls poste soll einfach nur nach einem Reboot die Raspi Kamera starten. Das Skript selbst läuft tadellos wenn man es manuell startet.

    Es liegt dort wo die Runlevelskripte, wie etwa bei Debian auch, abgelegt werden müssen und auch in den einzelnen Verzeichnissen für die Runlevel habe ich entsprechende Links angelegt

    Code
    lrwxrwxrwx 1 root root 20 Dez 15 18:34 /etc/rc0.d/K01vid-stream -> ../init.d/vid
    -stream
    root@feesercam : ~ > ls -l /etc/init.d/vid-stream
    -rwxr-xr-x 1 root root 928 Dez 25 20:06 /etc/init.d/vid-stream
    root@feesercam : ~ >

    Ich habe auch

    update-rc.d vid-stream defaults

    aufgerufen und immer noch ist der Videostream nach dem täglichen Reboot (habe ich über einen Crontabeintrag eingebaut, da der Stream nach spätestens 3 Tagen eingefroren war und ich nur noch einen Kaltstart machen konnte).

    Hier nun das Skript

    Ach ja, kleine Zusatzinfo, die aber eigentlich nichts mit dem obigen Problem zu tun hat. Der Raspberry und die Kamera sind per WiFi ans heimische Netzwerk angebunden. Die eth0 Schnittstelle musste ich in der interfaces Datei löschen, da die WiFi Schnittstelle nicht zuverlässig gestartet wurde (hatte ich beim googeln gefunden)

    Irgendwie stehe ich hier auf dem Schlauch und hoffe jemand sieht was ich falsch gemacht habe:s

    Gruß und schon mal Guten Rutsch

    Wolpi

  • Runlevelskript wird nach einem Reboot nicht ausgeführt, manuell klappt alles? Schau mal ob du hier fündig wirst!

  • Ist das ein copy&past Fehler oder wieso sind da einige Zeile verrückt?

    Code
    raspivid -t 0 -w 445 -h 250 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec
     copy -an -f flv -metadata streamName=FeesersStream tcp://192.168.0.126:6666 2>
    /var/log/FeesersStream.log &
    
    
    
    
            pid=`ps -ef | grep -i raspivid | grep -v grep | awk '{printf("%s\n",$2)}
    '`

    In der Form kann es nicht funktioniern ;)


    Und vielleicht hilfts wenn du bei "Required-Start" was einträgst wie zum Beispiel "$local_fs $remote_fs $network"


    Und die Leerzeile dort wegmachen:

    Bash
    #!/bin/sh
    
    
    ### BEGIN INIT INFO
  • Hallo,

    zunächst vielen Dank für die Antworten und Tipps und sorry für die verspätete Antwort. Mich hatte gestern ein Virus etwas außer Gefecht gesetzt.

    Das mit den verrückten Codezeilen war wirklich ein Copy/Paste Fehler, ich habe das aber sicherheitshalber überprüft!

    Die Leerzeile habe ich auch entfernt, leider startet das Skript immer noch nicht nach dem Reboot. Allerdings habe ich dieses Mal kein update-rc.d wie oben beschrieben ausgeführt, da ich Dank Eurer Hinweise nochmal in den Runlevelverzeichnissen die relativen Pfade auf absolute Pfade geändert habe. Dabei ist mir aufgefallen, dass die Startskripte alle auf S01... geändert waren, noch vor dem Start des Apache. Damit war ja klar warum das vorher nicht klappte.

    Was macht update-rc.d denn alles, ich meine wenn ich das jetzt nicht ausgeführt habe? Wenn ich mich recht erinnere musste man das vor sagen wir 6-7 Jahren auch nicht ausführen?

    Gruß

    Wolpi

  • Das da Softlinks erstellt werden habe ich sowohl gelesen, als auch selbst gesehen. Blöd ist m. E. aber dass bei der Option defaults offenbar die niedrigste Startreihenfolge ausgewählt wird, sprich das Teil vor allen anderen ausgeführt wird. Es wird auch nicht überprüft ob schon Symlinks vorhanden sind und einfach "überbügelt". Meine Frage richtete sich mehr danach ob hier ggf. eine "Datenbank" oder einfach eine Datei oder so gepflegt wird, in der eben zusätzlich die Startreihenfolge festgehalten wird (ähnlich etwa mnttab). Darüber habe ich bislang aber noch nichts gelesen. Ohne jetzt eine Diskussion vom Zaun brechen zu wollen, was ist denn an der "alten" Variante, in der man einfach die Symlinks angelegt hat schlechter bzw. wenn ich das richtig verstehe muss man dann doch update-rc.d gar nicht ausführen, oder?

    Guten Rutsch!

    Wolpi

  • Die Reihenfolge wird auch durch die "Required" Zeilen im Header beeinflusst.
    Keine Überprüfung ist auch normal da man den Befehl eh nicht ständig ausführt und wenn will man nicht mit irgendwelchen Nachfragen genervt werden.. Man muss etwas nicht unnötig verkomplizieren (datenbank usw)

    Und sonst empfiehlt es sich die manual Pages zu dem Befehl mal zu lesen: man update-rc.d (ne 'man Page' gibt es von 90% aller Befehle)
    Dann wirste vielleicht rausfinden das man, anstatt den Header des init Scripts zu nutzen, das auch selber festlegen kann zum Beispiel so: update-rc.d vidstream start 70 2 3 4 5 . stop 99 0 1 6 .

    Wenn du jedesmal mind 2 Symlinks lieber manuell anlegen und auch ggf alte manuell löschen willst kannst natürlich auch auf update-rc.d verzichten, das is Dir überlassen..

  • meigrafd hat ja schon alles gesagt.
    Um es mit meinen Worten zu sagen: "update-rc.d" ist als Vereinfachung gedacht, die Links per Hand zu setzen macht im Prinzip nichts anderes. Alte Unix-Hasen brauchen den Befehl eher weniger, obwohl ich gestehen muss, er erleichtert schon das Leben (vor allem wenn mehr als ein Runlevel gepflegt werden soll, was beim PI eher nicht der Fall ist).

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!