ERLEDIGT: Der Depp sitzt vor dem Gerät: Python / GPIO nicht via CRON

  • Moin :D.

    Ich habe keine Ahnung, was hier los ist. Ich habe ein NOKIA 5110 Display am RPi2 angeschlossen. Ich kann via der Adafruit Lib auch manuell Text auf dem Display ausgeben. Das Script liegt in ~/dcnow/.

    Sobald ich das Script aber per Cron ausführen will, kommt ... NICHTS. Cron ruft das Script zwar irgendwie auf. Es macht aber nichts. Logausgabe des Syslog:

    Code
    Sep 24 11:00:01 dreampi /USR/SBIN/CRON[29745]: (root) CMD (python2.7 /home/pi/dcnow/dcnow.py)
    Sep 24 11:00:01 dreampi /USR/SBIN/CRON[29746]: (root) CMD (/bin/sh /home/pi/dcnow/dcnowst.sh)
    Sep 24 11:00:02 dreampi kernel: [ 5985.599048] gpiomem-bcm2835 3f200000.gpiomem: gpiomem device opened.
    Sep 24 11:00:02 dreampi kernel: [ 5985.698630] gpiomem-bcm2835 3f200000.gpiomem: gpiomem device opened.
    Sep 24 11:00:02 dreampi /USR/SBIN/CRON[29743]: (CRON) info (No MTA installed, discarding output)
    Sep 24 11:00:02 dreampi /USR/SBIN/CRON[29744]: (CRON) info (No MTA installed, discarding output)

    Warum das Script nicht ausgeführt? Bzw.: Warum geht es per Hand (sudo python2.7 /home/........), aber nicht per Cron? :s Ich habe es sogar in CRONTAB, nicht CRONTAB -E eingegeben, wg. den Root Rechten. GPIO benötigt ja SUDO oder Root(?).

    Ich danke für Eure Hilfe :helpnew:.

    Einmal editiert, zuletzt von DeEAchtEmEsHa (24. September 2017 um 12:14)

  • ERLEDIGT: Der Depp sitzt vor dem Gerät: Python / GPIO nicht via CRON? Schau mal ob du hier fündig wirst!

  • Hallo De...,

    steht doch da:

    Zitat von "DeEAchtEmEsHa" pid='301034' dateline='1506247346'


    Sep 24 11:00:02 dreampi /USR/SBIN/CRON[29743]: (CRON) info (No MTA installed, discarding output)
    Sep 24 11:00:02 dreampi /USR/SBIN/CRON[29744]: (CRON) info (No MTA installed, discarding output)
    [/code]

    Kein MTA installiert, Ausgabe verworfen... Da kann nichts angezeigt werden.

    (Bei Starten über CRON gibt es kein default output...


    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.

    Einmal editiert, zuletzt von Andreas (24. September 2017 um 12:09)

  • Hallo.

    Öhm. Nö. Der MTA ist wurscht. Aber das war die Lösung: Im Shellscript:

    Bash
    #!/bin/bash
    cd /home/pi/dcnow 
    sudo python2.7 /home/pi/dcnow/dcnow.py

    und dann in crontab -e:

    Code
    * * * * * sh /home/pi/dcnow/dcnowst.sh
  • CRON hat eine Ausgabe, weiß aber nicht wo hin damit - deshalb die MTA Meldung im Log. Möchtest du die Ausgabe sehen musst du entweder einen MTA einrichten, oder die Ausgabe des Befehls in eine Datei umleiten.

    Zitat von "DeEAchtEmEsHa" pid='301042' dateline='1506248193'
    Bash
    #!/bin/bash
    cd /home/pi/dcnow 
    sudo python2.7 /home/pi/dcnow/dcnow.py

    und dann in crontab -e:

    Code
    * * * * * sh /home/pi/dcnow/dcnowst.sh

    2 Fehler:

    1) wenn du vorher in das Verzeichnis wechselst brauchst du anschließend beim ausführen nicht noch mal den absoluten Pfad angeben, dann reicht es nur die Datei dem Interpreter zu übergeben.
    Das vorherige wechseln in das Arbeitsverzeichnis des Scripts ist aber eigentlich auch nur dann erforderlich wenn in dem Script Dinge ohne absolutem Pfad aufgerufen werden - würden im Script absolute Pfade genutzt, könnte man sich also "cd /home/pi/dcnow" sparen...

    2) Der Shebang des dcnowst.sh zeigt auf /bin/bash , du führst es über Crontab aber über sh aus. Das sind 2 verschiedene Interpreter, sh ist älter und kann nicht so viel wie bash - die Dateiendung sagt wenig über den erforderlichen Interpreter aus, beispielsweise ist "raspi-config" auch ein sh Script nur ohne Dateiendung.
    Da das Script ein Shebang besitzt brauch man es nicht dem Interpreter übergeben sondern setzt einfach nur Ausführrechte (chmod +x) und führt die Datei direkt aus.

  • Zitat von "meigrafd" pid='301047' dateline='1506249556'

    2 Fehler:

    1) wenn du vorher in das Verzeichnis wechselst brauchst du anschließend beim ausführen nicht noch mal den absoluten Pfad angeben, dann reicht es nur die Datei dem Interpreter zu übergeben.
    Das vorherige wechseln in das Arbeitsverzeichnis des Scripts ist aber eigentlich auch nur dann erforderlich wenn in dem Script Dinge ohne absolutem Pfad aufgerufen werden - würden im Script absolute Pfade genutzt, könnte man sich also "cd /home/pi/dcnow" sparen...

    2) Der Shebang des dcnowst.sh zeigt auf /bin/bash , du führst es über Crontab aber über sh aus. Das sind 2 verschiedene Interpreter, sh ist älter und kann nicht so viel wie bash - die Dateiendung sagt wenig über den erforderlichen Interpreter aus, beispielsweise ist "raspi-config" auch ein sh Script nur ohne Dateiendung.
    Da das Script ein Shebang besitzt brauch man es nicht dem Interpreter übergeben sondern setzt einfach nur Ausführrechte (chmod +x) und führt die Datei direkt aus.

    Moin. Ja. Ich habe das angepasst. Macht, was es soll. Danke für die Info.

Jetzt mitmachen!

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