autostart.sh Programm IREXEC

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

    bin leider mit der Suchfunktion nicht fündig geworden. Ich möchte beim Start vom Raspberry Pi3 das Programm IREXE im Hintergrund laufen lassen. Leider verweigert mir LIBREELEC den Start von dem Programm in der Autostart.sh

    Die autostart.sh wird beim hochfahren korrekt ausgeführt hab ich mit einem sleep Befehl getestet. Der wird ausgeführt.
    Wenn ich die autostart.sh nach dem hochfahren händisch nochmal ausführe wird auch das IREXEC Programm korrekt gestartet.
    Deshalb vermute ich das es ein Rechteproblem beim hochfahren gibt.

    Kennt wer eine Möglichkeit wie ich das Programm automatisch beim hochfahren gestartet bekomme? Hab schon viel gelesen aber irgendwie bekomme ich das nicht ans laufen.


    MfG Igge

    • Offizieller Beitrag

    Hallo Igge!


    Kennt wer eine Möglichkeit wie ich das Programm automatisch beim hochfahren gestartet bekomme? Hab schon viel gelesen aber irgendwie bekomme ich das nicht ans laufen.

    Ich kenne mich mit LIBREELEC leider nicht aus, aber ein cronjob als root könnte gehen. :denker:

    [code=php]sudo crontab -e[/php]

    [code=php]@reboot PROGRAMMSTART[/php]

    • Offizieller Beitrag

    Versuchs mal ohne sudo mit crontab -e
    oder evtl. vorher anmelden als root, oder vielleicht liegts ja nicht an den Rechten?

    Hab schon viel gelesen aber irgendwie bekomme ich das nicht ans laufen.

    Was hast Du denn schon versucht?


  • Deshalb vermute ich das es ein Rechteproblem beim hochfahren gibt.

    Mit Rechten hat das wenig zu tun. Eher mit dem Zeitpunkt wann die autostart.sh ausgeführt wird.

    Der LIRC-Daemon (lircd) dekodiert zwar die gesendeten Signale, ist aber selbst nicht in der Lage, Befehle auszuführen. Dafür bringt das lirc-Paket ein eigenes Programm mit: irexec

    Eine weitere Besonderheit ist dass eine .lircrc Datei benötigt wird.

    Zeig deshalb mal bitte den exakten Inhalt deiner autostart.sh Datei.

    Ansonsten, lies dir das mal bitte durch: https://wiki.ubuntuusers.de/Lirc/Tasten_mi…tionen_belegen/

  • Mit Rechten hat das wenig zu tun. Eher mit dem Zeitpunkt wann die autostart.sh ausgeführt wird.

    Der LIRC-Daemon (lircd) dekodiert zwar die gesendeten Signale, ist aber selbst nicht in der Lage, Befehle auszuführen. Dafür bringt das lirc-Paket ein eigenes Programm mit: irexec

    Eine weitere Besonderheit ist dass eine .lircrc Datei benötigt wird.

    Zeig deshalb mal bitte den exakten Inhalt deiner autostart.sh Datei.
    :wallbash:
    Ansonsten, lies dir das mal bitte durch: https://wiki.ubuntuusers.de/Lirc/Tasten_mi…tionen_belegen/

    Servus,

    Danke für den link. Hat geholfen. Hab wie in dem link beschrieben in die .profile Datei einfach den Befehl reingeschrieben (/usr/bin/irexec &) und siehe da es funktioniert. :danke_ATDE:
    War ne schwere Geburt. Aber wenn man von Linux nicht wirklich Ahnung hat werden auch die einfachsten Sachen recht schwierig. :wallbash:


    MfG Igge

    Einmal editiert, zuletzt von Igge (5. November 2016 um 19:00)

  • Folgeproblem...
    Die IREXEC wird erst gestartet wenn ich mich remote auf den PI einlogge. Wenn er "normal" hochfährt scheint keine Anmeldung zu erfolgen. Gibt es eine Möglichkeit das der user sich bei jedem start automatisch anmeldet? Ich hab bis jetzt nur ne Anleitung für Raspbian Jessie gefunden. Und ich war schon so froh das es ging. Zu früh gefreut. =(

  • Hast du schon mal versucht eine künstliche Verzögerung in die autostart.sh einzubauen?
    Da ich immer noch nicht deinen Eintrag in der autostart.sh kenne musst du das halt selber entsprechend Deinen Begebenheiten anpassen!

    Code
    (sleep 20s ; /usr/bin/irexec &) &

    Die Umschließung durch ( ) bildet eine Befehlsgruppe die komplett in den Hintergrund geschickt wird um die autostart.sh nicht zu blockieren. In der Gruppe wird dann erst 'sleep' ausgeführt und 20 Sekunden später erst der Befehl in den Hintergrund geschickt... So zumindest die Theorie ;)
    Ob 20s ausreicht weiß ich nicht.


  • Hast du schon mal versucht eine künstliche Verzögerung in die autostart.sh einzubauen?
    Da ich immer noch nicht deinen Eintrag in der autostart.sh kenne musst du das halt selber entsprechend Deinen Begebenheiten anpassen!

    Code
    (sleep 20s ; /usr/bin/irexec &) &

    Die Umschließung durch ( ) bildet eine Befehlsgruppe die komplett in den Hintergrund geschickt wird um die autostart.sh nicht zu blockieren. In der Gruppe wird dann erst 'sleep' ausgeführt und 20 Sekunden später erst der Befehl in den Hintergrund geschickt... So zumindest die Theorie ;)
    Ob 20s ausreicht weiß ich nicht.

    Servus,

    danke für deine Antwort. hier die aktuelle autostart.sh

    /storage/hyperion/bin/hyperiond.sh /storage/.config/hyperion.config.json > /storage/logfiles/hyperion.log 2>&1 &
    (sleep 30s ; /usr/bin/irexec &) &


    Hab die mal nach deinem Beitrag umgebaut. Funktioniert aber nicht. Ich hatte das schon mal ohne die Klammern gemacht. Ging auch nicht. Hatte dann mal den Sleep Befehl und die IREXEC in eine seperate ausführbare .sh Datei ausgelagert, da ohne Klammern er das hochfahren unterbrochen hatte. In der autostart.sh stand dann die ausführbare .sh Datei drin. Ging aber auch nicht. Was aber mitlerweile geht ist dank deinem Beitrag das er die IREXEC startet wenn ich mich einlogge. Jetzt müsste ich nur noch die automatische Anmeldung hin bekommen. Gibts da nen Tipp?

    MfGIgge

  • Was aber mitlerweile geht ist dank deinem Beitrag das er die IREXEC startet wenn ich mich einlogge. Jetzt müsste ich nur noch die automatische Anmeldung hin bekommen.


    Ist das eine Voraussetzung "Start bei login" und "Auto-Login" oder ist das nur eine neue Krücke, welche die Macke der anderen alten Krücke ausgleicht? Muss IREXEC zwingend in der autostart.sh gestartet werden oder kann das auch ganz komfortabel losgelöst von allem anderen bei systemstart erfolgen? Läuft IREXEC unter einem bestimmten User oder kann das auch unter dem User "root" laufen? Forkt sich IREXEC selber oder benötigt es einen Parent-Prozess, aus dem es geforkt wird?

    Ich wundere mich immer wieder neu, wie kompliziert manchmal versucht wird, eigentlich einfache Problem zu lösen......

    Einmal editiert, zuletzt von WinterUnit16246 (6. November 2016 um 22:29)

  • Ich wundere mich immer wieder neu, wie kompliziert manchmal versucht wird, eigentlich einfache Problem zu lösen......

    Ich wundere mich wie kompliziert es ist ein einfaches Programm zum automatischen starten zu bekommen :s

    Mir ist es eigentlich egal wann und wo das Programm gestartet wird. Nur hat es bis jetzt noch nicht funktioniert. Im Moment hab ich es aus der autostart.sh raus genommen, da es dort nicht geht. Ich hab es jetzt in der .profile Datei drin stehen. Da führt er es aber erst aus wenn ich mich per SSH als root drauf logge.

    Wenn du eine einfachere und bessere Lösung hast nehm ich gern. Ich klammere mich im Moment nur an JEDEN Strohalm. :daumendreh2:

    Mit freundlichen Grüßen Igge

  • Google mal nach: Linux Auto Login

    Auch wenn LibreELEC was besonderes ist, wird das da auch irgendwie funktionieren :fies:

    Alternative Suche: LibreELEC Auto Login


  • Google mal nach: Linux Auto Login

    Auch wenn LibreELEC was besonderes ist, wird das da auch irgendwie funktionieren :fies:

    Alternative Suche: LibreELEC Auto Login

    Tja du schreibst es ja selbst. "Irgendwie" ! Und genau das ist das Problem. Ich hab so einiges dazu schon bei Google gesucht. Das beste was ich gefunden habe war was zu Raspbian Jessie. Und das hat mit Libreelec mal so gar nix zu tun. Zumindestens funktionieren die Befehle aus der Anleitung nicht bei Libreelec. Den Rest den man dann da findet bezieht sich nicht auf automatische User Anmeldungen. Es schimpfen immer alle auf Windows aber je länger ich hier mit dem System arbeite um so mehr wünsch ich mir das zurück. :@

    Trotzdem Danke für die Hilfe.

    Mit freundlichen Grüßen Igge

  • Naja, LibreELEC funktioniert deswegen so gut weil man am System nicht so einfach herumpfuschen kann. LibreELEC ist also etwas völlig anderes als Raspbian.

    Da wir aber auch nicht vor deinem Pi sitzen, können wir nur mit den Informationen arbeiten die du uns lieferst. Aus meiner Sicht ist es nicht nachvollziehbar wieso lircd läuft aber irexec sich nicht starten lässt. Versuch doch mal herauszufinden worüber lircd automatisch gestartet wird und versuch dich dort dann einzuklinken - oder wohl möglich kann man auch lircd dahingehend konfigurieren.


    PS: Bitte nicht Beiträge vollständig quoten/zitieren, vor allem wenn diese genau da drüber stehen.

    • Offizieller Beitrag


    Da führt er es aber erst aus wenn ich mich per SSH als root drauf logge.

    Auf die Gefahr hin, daß ihr jetz alle die Augen verrollt... :shy: oder :auslachen:
    Darf ich meinen Crontab-Vorschlag nochmals ins Rennen schicken?


  • Auf die Gefahr hin, daß ihr jetz alle die Augen verrollt... :shy: oder :auslachen:
    Darf ich meinen Crontab-Vorschlag nochmals ins Rennen schicken?

    Und worin besteht der Unterschied zwischen crontab und /storage/.config/autostart.sh ? :-/

  • Das beste was ich gefunden habe war was zu Raspbian Jessie. Und das hat mit Libreelec mal so gar nix zu tun. Zumindestens funktionieren die Befehle aus der Anleitung nicht bei Libreelec.


    Doch, Jessie hat ne ganz Menge mit libreelec gemeinsam... und die üblichen hier für Deinen Zweck im Web zu findenden Befehle funktionieren durchaus. Denn letztendlich ist libreelec auch NUR ein Linux... zwar ein stark limitiertes mit vielen Restriktionen, aber immer noch ein Linux. Und weil es eben auch systemd als Init-System verwendet, kann man alles was es im Web für Debian oder Raspian zu systemd findet, auch verwenden.

    Es wäre allerdings viel einfacher Dir zu helfen, wenn Du auch die Fragen beantworten würdest:
    Läuft IREXEC unter einem bestimmten User oder kann das auch unter dem User "root" laufen? Welche Abhängigkeiten hat IREXEC...?... vielleicht gar keine, oder z.B. ein etabliertes Remote-Filesystem, oder nur das Online-Netzwerk, oder nur das lokale Filesystem? Sind andere Prozesse von IREXEC abhängig? Was macht das Programm? Stellt es nur eben was ein und beendet sich wieder oder bleibt es dauerhaft aktiv? Forkt sich IREXEC selber oder benötigt es einen Parent-Prozess, aus dem es geforkt wird? Welche Aufgabe erfüllt das Programm?

    So völlig allgemein gehalten, mit einer einigermaßen Trefferquote wird das hier bei Dir funktionieren:

    Code
    nano /storage/.config/system.d/xexec.service

    Du musst hier jetzt nur den Programmpfad "/bin/sleep 120" durch den vollständigen (!) von IREXEC ersetzen. Danach aktivierst Du die Unit mit

    Code
    cd /storage/.config/system.d
    systemctl enable xexec.service


    und beim nächsten Start müsste es aktiv sein. Fehler -falls es nicht gestartet wurde- kannst Du mit

    Code
    journalctl | grep xexec


    nachsehen. Übrigens ist "journalctl" ebenso wie systemctl auch ein Standard-Debian-Befehl.


    Ich kenne libreelec zu wenig, deswegen habe ich diesen merkwürdigen Namen "xexec" gewählt, was im übertragenen Sinne für "extra execute" steht. Ich würde auch dabei bleiben, ansonsten musst Du vorher sehr sorgfältig prüfen, ob es schon einen anderen Service mit dem Namen gibt, den Du einrichten willst. Von "autostart.service" würde ich hier mal abraten.

    Wenn Dein Programm ein ausgewiesener Daemon ist, ist hier der Typ "simple" falsch.... wenn andere Prozesse von Deinem Programm abhängig sind, ist "simple" auch falsch..... also,wenn Du schadende Hilfe vermeiden willst, sind vorher entsprechende und bessere Informationen Deinerseits notwendig..... ansonsten "Viel Glück" *fg*

    Einmal editiert, zuletzt von WinterUnit16246 (7. November 2016 um 18:52)


  • Es wäre allerdings viel einfacher Dir zu helfen, wenn Du auch die Fragen beantworten würdest:

    Läuft IREXEC unter einem bestimmten User oder kann das auch unter dem User "root" laufen? Welche Abhängigkeiten hat IREXEC...?... vielleicht gar keine, oder z.B. ein etabliertes Remote-Filesystem, oder nur das Online-Netzwerk, oder nur das lokale Filesystem? Sind andere Prozesse von IREXEC abhängig? Was macht das Programm? Stellt es nur eben was ein und beendet sich wieder oder bleibt es dauerhaft aktiv? Forkt sich IREXEC selber oder benötigt es einen Parent-Prozess, aus dem es geforkt wird? Welche Aufgabe erfüllt das Programm?


    Servus,

    Schon mal Danke für deine Antwort.

    Also dann VERSUCHE ich deine Fragen mal zu beantworten. Bitte um Nachsicht ich hab nicht so viel Ahnung von Linux wie ihr.
    -Ja das Programm IREXEC läuft auch unter "root".
    -Abhängigkeiten, keine Ahnung. Wie bekomme ich das raus? Die IREXEC ist ein Programm für .lircrc also denk ich mal das es da schon Abhängigkeiten gibt.
    -Das Programm läuft im Hintergrund und soll auf Infrarot Signale reagieren. Diese IR Befehle starten dann diverse .sh Skripte mit Befehlen. Somit also dauerhaft aktiv.
    - Forkt :s Sorry kann mit dem Begriff nix anfangen.

    Hier ist bissl was dazu beschrieben. Vielleicht beantwortet dir das mehr Fragen. link

    MfG Igge

    Einmal editiert, zuletzt von Igge (7. November 2016 um 21:22)

  • Vielleicht beantwortet dir das mehr Fragen. link

    Vielleicht hättest Du auch einfach mal selber die Beschreibung auf der Seite lesen sollen - da ist alle Information enthalten. Und wenn man den Begriff Fork und Daemon nicht kennt, der hier in diesem Zusammenhang wichtig ist und worauf ich hingewiesen habe, dann kann man da einfach mal nach googlen und findet gute Erklärungen für Fork und Daemon.

    Für den Start des Programms als Daemon sieht die Service-Unit so aus... Du musst nur die Pfadangabe in 'ExecStart' anpassen:

    Code
    nano /storage/.config/system.d/irexec.service

    Enabled für den Systemstart wie vor:

    Code
    cd /storage/.config/system.d
    systemctl enable irexec.service
    systemctl reboot
  • Ja wie schon gesagt ich hab mir den link auch durchgelesen, konnte damit aber nix anfangen. Hab jetzt mal deine Version getestet aber es funktionert nicht. Wenn ich nach dem restart die Prozessliste aufrufe taucht da auch keine IREXEC auf.

Jetzt mitmachen!

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