watchdog funktioniert nicht

  • hi,

    ich weiß nicht so recht in welches unterforum ich das hier packen soll, also probier ichs einfach mal hier :D

    und zwar läuft auf meinem pi neben OSMC (KODI 16.1) als datenbank/wiedergabegerät ein MusicBot für discord:

    https://github.com/SexualRhinoceros/MusicBot

    der läuft auch wunderbar und ich habs auch geschafft über die rc.local dafür zu sorgen, dass der bot nach einem reboot gestartet wird.

    das sieht dann so aus:


    jetzt hätte ich gerne das der pi den bot startet, falls dieser mal abstürzt.
    also ein shell script erstellt und mit sudo chmod 755 ausführbar gemacht:


    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo already running
           exit 0
    else
           sudo python3.5 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi


    hab den bot dann gestoppt und das script ausgeführt > bot startet
    das ganze dann noch in sudo crontab -e eingefügt (vorher noch "sudo apt-get install cron" :D :(

    Code
    */1* * * *  sh /home/osmc/MusicBot/watchdog.sh >> /home/osmc/logs/crontab.log 2>&1

    bot wieder gestoppt und gewartet....und gewartet.

    das ende vom lied ist:

    nichts passiert, nicht mal ne crontab.log im ordner zu finden.

    hoffe ihr könnt mir da helfen.

    MfG


    doncamillo

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 14:13)

  • Hallo doncamillo,

    herzlich Willkommen in unserem Forum!

    Schau mal hier nach...

    Ansonsten liegt es wohl daran, dass der Systempfad beim Reboot noch nicht vorliegt - und es nach dem Hochfahren funktioniert. Hier helfen nur durchgehend absolute Pfade, um Kommandos auch finden zu können.

    Ansonsten vermisse ich @reboot in der Definition des Cronjobs (siehe letzter Abschnitt des von mir verlinkten Beitrags) ... weshalb das Teil bei Dir nach dem Reboot auch nicht gestartet werden kann.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • hey, danke erstmal für die antworten,.

    aber es geht ja gar nicht um einen reboot. dafür hab ich die rc.local, und das funktioniert einwandfrei.

    folgendes szenario:
    der pi läuft schon, der bot läuft auch > nach 5 h stürzt der bot ab > cronjob startet bot neu

    leider funktioniert der teil mit dem neustarten nicht :D

    EDIT: stackoverflow schön und gut, ich versteh gerade so viel von linux/ssh bedienung dass ich osmc/den musicbot zum laufen bekommen habe, mit schritt für schritt erklärung und copy paste...was die da schreiben....da versteh ich nur bahnhof :D

    EDIT2: hab in crontab -e folgendes getan:

    von:

    Code
    */1* * * *  sh /home/osmc/MusicBot/watchdog.sh >> /home/osmc/logs/crontab.log 2>&1

    zu:

    Code
    * * * * *   /home/osmc/MusicBot/watchdog.sh >> /home/osmc/logs/crontab.log 2>&1

    jetzt führt er zwar den cron aus, gibt auch ne log file in meinen ordner aus, aber der bot startet nicht:

    sudo: python3.5: command not found

    und ich versteh nicht was ihr mit absoluten pfaden meint. ich mein genauer als vom home pfad bis hin zum ordner wo die "watchdog.sh" steckt kann ichs ja nicht angeben.

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 14:13)

  • ... EDIT: stackoverflow schön und gut, ich versteh gerade so viel von linux/ssh bedienung dass ich osmc/den musicbot zum laufen bekommen habe, mit schritt für schritt erklärung und copy paste...was die da schreiben....da versteh ich nur bahnhof ::D ...


    Ich habe mal 'crontab startet nicht' als Suchargument hier im Forum eingegeben (ganz oben auf der Seite gibt es die Lupe mit der man Suchen startet) und die schon von mir erwähnten diversen vorherigen Threads zu exakt demselben Thema gefunden. U.A. auch das Tutorial von meigrafd welches dieses Thema auch behandelt ;)

  • du meinst also im watchdog.sh oder im cron?

    zum verständnis nochmal, ich bin absoluter noob was das angeht :(

    python3.5 liegt bei mir in /home/osmc/python-3.5.0 jetzt stellt sich die frage reicht das oder muss ich zu einer bestimmten datei?
    das selbe gilt dann wohl auch für sudo? (noch nicht gefunden)

  • Der Pfad inkl. Befehl ist der vollständige/absolute Pfad.

    /home/osmc/python-3.5.0/
    Ist vermutlich kein Teil vom PATH... Das ist eine Umgebungsvariable die vom System genutzt wird um nach Befehle zu suchen... Führt man zum Beispiel "cd" aus wird vom System im PATH nach diesem Befehl gesucht. Befindet sich der Befehl nicht im PATH kann er auch nicht ohne Angabe eines Pfades ausgeführt werden - und genau das scheint bei dir das Problem zu sein.

    Ich kenn mich nicht mit OSMC aus, aber für gewöhnlich könnte man das wie folgt fixen:

    Code
    export PATH=$PATH:/home/osmc/python-3.5.0

    Also deinen individuellen Pfad zur PATH Umgebung hinzufügen - dauerhaft dh ein mal ausführen müsste eigentlich reichen. Der Doppelpunkt fungiert als Trennzeichen.

    Wenn das nicht funktioniert, musst du in deinem Script halt den absoluten Pfad nutzen: /home/osmc/python-3.5.0/python3.5

    sudo ist eigentlich ein Systemweiter Befehl den man aber erst installieren muss, da nicht jeder sudo benötigt wenn es eh nur "root" auf dem System gibt ;)


    PS: FAQ => Nützliche Links / Linksammlung => HowTo: CODE / PHP Code im Forum posten

  • das python problem scheint gelöst :D jetzt muss ich nur den absoluten pfad von sudo finden^^

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
           echo already running
          exit 0
    else
          /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
          exit 0
    fi


    log:
    /home/osmc/MusicBot/watchdog.sh: 6: /home/osmc/MusicBot/watchdog.sh: /home/osmc/Python-3.5.0: Permission denied

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
           echo already running
          exit 0
    else
          sudo /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
          exit 0
    fi


    log:
    sudo: /home/osmc/Python-3.5.0: command not found

    ich such dann mal :D

    danke schonmal für eure hilfe <3

    EDIT: scheint wohl /bin/su zu sein:
    No passwd entry for user '/home/osmc/Python-3.5.0'

    EDIT2: evtl teste ich das mal mit system cron

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 14:58)

  • Es muss kein sudo installiert sein.

    "su" ist nicht "sudo".

    Über welchen Benutzer führst du das Script aus? Führ mal folgenden Befehl aus und poste die Ausgabe: whoami


    GROSS-/kleinschreibung ist EXTREM wichtig.
    Wieso plötzlich /home/osmc/Python-3.5.0/ :-/ Vorhin war es noch /home/osmc/python-3.5.0/
    Und war das nicht, nur der Pfad ? :s


    python3.5 liegt bei mir in /home/osmc/python-3.5.0

    Noch mal: Der Absolute / Vollständige Pfad lautet dann: /home/osmc/python-3.5.0/python3.5

  • whoami ergibt "osmc"

    ja es ist /home/osmc/Python-3.5.0, muss mich in der "eile" wohl vertippt haben. aber damit funktionierts, also zumindest sagt er nicht mehr "unknown command" sondern "permission denied". was für mich bedeutet das zumindest versucht wird das script auszuführen.

    mein shell script sieht jetzt so aus:

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           /bin/su /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    und naja, es läuft nicht :D

    > crontab.log:
    No passwd entry for user '/home/osmc/Python-3.5.0'

    bot manuell gestartet:
    > crontab.log
    root 1057 1056 0 15:29 pts/5 00:00:00 sudo python3.5 run.py
    root 1058 1057 54 15:29 pts/5 00:00:09 python3.5 run.py
    > watchdog.log
    already running

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 15:31)

  • Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    >crontab.log:
    /home/osmc/MusicBot/watchdog.sh: 6: /home/osmc/MusicBot/watchdog.sh: /home/osmc/Python-3.5.0: Permission denied

    >watchdog.log:
    wird nichts verändert

    auf das "sudo" weglassen bin ich ja auch drauf gekommen, dann kam ja "permission denied". deshalb hab ichs ja mit nem system cron in "/etc/crontab" probiert:

    Code
    * * * * *       root    /home/osmc/MusicBot/watchdog.sh >> /home/osmc/logs/crontab.log 2>&1

    das ergebniss seht ihr oben

    EDIT: mit

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           var/lib/sudo /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    bekomme ich

    /home/osmc/MusicBot/watchdog.sh: 6: /home/osmc/MusicBot/watchdog.sh: /var/lib/sudo: Permission denied

    und mit

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           usr/bin/sudo /home/osmc/Python-3.5.0 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    bekomm ich
    sudo: /home/osmc/Python-3.5.0: command not found

    ich weiß echt nimmer weiter....

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 18:20)

  • ich bin jetzt so weit, das meine watchdog.sh so aussieht:

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           su osmc /usr/bin/python3m /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    ergebniss ist:
    /home/osmc/Python-3.5.0/python: /home/osmc/Python-3.5.0/python: cannot execute binary file

    um vorweg zu nehmen, ja Python-3.5.0 ist nen ordner :D

    /home/osmc/Python-3.5.0: /home/osmc/Python-3.5.0: is a directory

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 18:47)

  • lass ichs weg, bekomm ich permission denied?

    aber okay, mach ich mal...jetzt muss nur der richtige python path gefunden werden

    nagut, wir sind schon mal weiter:

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           /usr/bin/python3m /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    > crontab.log:

    Code
    Traceback (most recent call last):
      File "/home/osmc/MusicBot/run.py", line 224, in <module>
        main()
      File "/home/osmc/MusicBot/run.py", line 144, in main
        input("Press enter to continue . . .")
    EOFError: EOF when reading a line

    > watchdog.log:

    Code
    Python 3.5+ is required. This version is 3.4.2
    Attempting to locate python 3.5...
    Please run the bot using python 3.5
    Press enter to continue . . .

    von mir aus darf sich jemand mit teamviewer aufschalten, um mal aufm ftp zu stöbern etc.

    EDIT: hab da noch was gefunden:

    Einmal editiert, zuletzt von doncamillo (18. September 2016 um 20:26)

  • und weiter geht die wilde fahrt:

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
            echo $(date -u) already running >> /home/osmc/logs/watchdog.log
           exit 0
    else
           /usr/local/bin/python3.5 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
           exit 0
    fi

    >watchdog.log:

    Code
    [config] Config file not found, copying example_options.ini
    
    
    An error has occured:
    
    
      Problem:  Your config files are missing.  Neither options.ini nor example_options.ini were found.                                     
      Solution: Grab the files back from the archive or remake them yourself and copy paste the content from the repo.  Stop removing important files!

    bin auch nebenher mit dem musicbot staff am quatschen. mal sehen obs n python error oder bot error ist...

  • Vermutlich sucht der bot nach den Konfigdateien im aktuellen Arbeitsverzeichnis. Deswegen hast Du in Deiner rc.local ja auch ein "cd /home/osmc/MusicBot/" stehen. Das würde ich genauso auch in den watchdog schreiben. Also:

    Bash
    #!/bin/sh
    if ps -ef | grep -v grep | grep run.py ; then
           echo $(date -u) already running >> /home/osmc/logs/watchdog.log
          exit 0
    else
          cd /home/osmc/MusicBot/ && /usr/local/bin/python3.5 /home/osmc/MusicBot/run.py >> /home/osmc/logs/watchdog.log &
          exit 0
    fi

Jetzt mitmachen!

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