Zwei Sachen in der rc.local Datei benuten und datei über rc.local starten.

  • Hallo!

    Ich habe einen Script in die rc.local datei eingetragen und es funkrioniert auch (ist ein Script für eine Taster mit dem ich den Rasperry runterfahren kann).
    Doch ich brauche eine zweite Sache, die beim boot startet, und zwar ein fertig programmierter Server, den ich im LXTerminal ohne Probleme starten kann.
    Frage: Wie kann ich zwei Sachen über die rc.local Datei starten?
    Ich weiß, dass ich vielleicht einen Python-Script machen muss und den dann über die rc.local Datei starten muss,
    aber das Problem ist, dass die Datei, die ich starten möchte in einem Ordner ist, Beispiel:
    Das geht:
    1: cd Server
    2: ./Cuberite
    Das geht nicht:
    /home/pi/Server/Cuberite

    Ich würde mich über jede Antwort sehr freuen! Danke im vorraus!

  • Zwei Sachen in der rc.local Datei benuten und datei über rc.local starten.? Schau mal ob du hier fündig wirst!

  • zu dbv:
    Der Server startet zwar, aber er läuft nicht so wie er soll.

    zu linusg:
    Das habe ich auch schon probiert, funktioniert aber leider nicht.

    zu noisefloor:
    Ehmm... kenn mich noch nicht so gut damit aus, aber was ist eine systemd Service Unit?

    Einmal editiert, zuletzt von BesterKester (24. Juli 2017 um 10:35)

  • Zwischen-Update:
    Ich hab jetzt einen Shell Script gemacht, der wenn ich den starte, auch den Server richtig startet. Ich krieg diesen Script aber nicht in den Autostart. Ich weiß aber wie ich ein Python Script in den Autostart bekomme.
    Also bräuchte ich entweder ein Python Script, der einen Shell Script oder den Server startet , oder etwas, um den Shell Script zu autostarten.
    (Im Shell Script steht folgendes: cd /home/pi/Server && ./Cuberite)
    Blos ich find auch wieder keine Lösung.

  • Also zunächst mal: Es gibt mehrere "Autostart" Möglichkeiten. FAQ => Nützliche Links / Linksammlung => autostart

    Dann scheint Cuberite so programmiert zu sein das es keine absoluten sondern relative Pfade im Programm verwendet. Nützliche Links / Linksammlung => pfade

    Und zu guter letzt scheinst du bereits dein Python Script nicht ganz richtig in die /etc/rc.local eingetragen zu haben... So wie es sich anhört blockiert dein Python Script das Script /etc/rc.local ? Du müsstest es dann in den Hintergrund schicken damit nachfolgende Zeilen ebenfalls verarbeitet werden können.

    Scripts und auch Programme werden immer von oben nach unten, Zeile für Zeile, abgearbeitet. Führt man in einem bash-Script zum Beispiel "find / -name bla" aus wird solange gewartet bis der Befehl beendet wurde - das Script wird also an der Stelle blockiert. Erst wenn der Befehl fertig und fehlerfrei beendet wurde können nachfolgende Zeilen verarbeitet/ausgeführt werden. Man sagt dazu auch: Die Verarbeitung/Ausführung findet im Vordergrund statt.

    Wie verhindert man nun dass ein Befehl bzw eine Zeile die Verarbeitung blockiert? => Indem man es in den Hintergrund schickt.

    Wie erreicht man das? => Indem man ein einfaches " & " ans Ende der Zeile setzt.
    Nicht zu verwechseln mit " && " da das ein klassisches "AND" bedeutet - nachfolgendes wird nur dann ausgeführt wenn vorheriges erfolgreich/fehlerfrei war. In deinem Fall " cd /home/pi/Server && ./Cuberite " wird ./Cuberite nur dann ausgeführt wenn der vorherige "cd" Befehl erfolgreich war. Existiert der Pfad aber nicht wird "cd" einen Fehler aus und dann wird auch ./Cuberite nicht ausgeführt.

    Desweiteren ist es möglich mehrere Befehle in einer Gruppe zusammen zu fassen und das gesamte Konstrukt dann in den Hintergrund zu schicken.

    So, lange Rede kurzer Sinn.... Mögliche Lösung:

  • ls -la /home/pi/Server:

    ls -ls /etc/rc.local:

    Code
    ls -la /etc/rc.local[code]ls -la /etc/rc.local
    
    
    -rwxr-xr-x 1 root root 389 Jul 26 22:48 /etc/rc.local


    cat /etc/rc.local:

    Hoffe, dass das so richtig ist. :danke_ATDE: nochmal!

  • Du hast den /etc/rc.local Eintrag nicht so gemacht wie ich in Beitrag#9 beschrieben hatte.

    Im Zweifelsfall: /etc/rc.local ist auch nur ein Script. Wenn du es manuell ausführst (direkte, ohne Übergabe an einen Interpreter!) und es dann so funktioniert wie gewünscht, steht einem Autostart nichts im Wege...

  • Ich hab die rc.local nochmal überarbeitet, und wenn ich sie über /etc/rc.local starte, startet der Python Script und der Cuberite Server. Doch als ich den RPI wieder booten wollte funktionierte es nur "halb", also er startete nicht im Ordner. Komisch :s ......

  • Kann ich nicht nachvollziehen - ein Test den ich eben gerade durchgeführt habe, funktioniert 1a. Guckst du => http://raspberrypi.roxxs.org/rclocal_path.mp4

    Wie genau hast du die Datei manuell ausgeführt, und wie genau hast du sie bearbeitet?
    Bitte möglichst genau beschreiben!

  • Wie ich sie manuell ausgeführt habe:

    Ganz normal LXTerminal gestartet und:


    Code
    pi@raspberrypi:~ § /etc/rc.local

    Und irgendwie wenn ich jetzt das mache geht der Server auch nicht.

    Wie ich sie bearbeitet habe:

    Ganz normal LXTerminal gestartet und:

    Code
    pi@raspberrypi:~ $ sudo nano /etc/rc.local

    Ich kapier auch überhaupt nicht warum es bei mir nicht funktioniert.
    :s :denker:

    Einmal editiert, zuletzt von BesterKester (29. Juli 2017 um 17:21)

  • Ich glaube ich habe jetzt den Fehler gefunden: Der Server startet zwar im richtigen Ordner, aber irgendwas fährt ihn, wenn er läuft, sofort wieder runter.
    Die Information

    Code
    Startup complete, took (irgendeine Zahl) ms!

    sagt mir, dass der Server läuft. Also das passiert auch wenn ich ihn über

    Code
    cd Server && ./Cuberite

    starte.
    Und wenn der Server manuell gestartet wurde und ich ihn mit Strg + C runterfahre kommt

    Code
    Shutting down server...

    Und dann alles andere.
    ----> Genau wie beim boot.

    Das heißt:
    Irgendwas drückt, wenn er normal läuft, Strg + C oder fährt ihn normal runter.
    Hoffe damit kann man mehr anfangen...... :^^:
    Freue mich auf antworten :danke_ATDE:

  • Nein....
    Es liegt nicht daran, dass er in einem falschen Ordner oder so startet.
    Es liegt daran, dass irgendetwas ihn wieder beendet, auch wenn ich ihn in den Hintergrund schicke.

Jetzt mitmachen!

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