Neustart bei Änderung einer Datei

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

    gibt es die möglichkeit den Pi neuzustarten sobald sich in einem Verzeichnis (in meinem Fall: /home/pi/Documents/Monitor ) eine Datei ändert?
    Und zwar spielt mein Pi eine Powerpoint ab und falls diese aktuallisiert wird wäre es doch schon wenn er neustartet und die neue Datei gleich öffnet (sofern der Name gleich bleibt).

    Gruß
    webtp

  • Eigentlich brauch der Pi deshalb nicht komplett neu starten, sondern nur das Programm was die Datei wiedergibt.

    Wenn es nicht wichtig ist ob es bis zu einer Minute dauert bis die neue Präsentation neu gestartet wird, könntest du mithilfe von Crontab ein Script jede Minute ausführen was auf Existenz einer Datei in einem bestimmten Verzeichnis prüft, PowerPoint beendet und neu startet.

    Alternativ erzeugst du eine temporäre Datei mit dem Zeitstämpel der jetzten Präsentationsdatei und vergleichst dann nur noch ob die temporäre Datei älter ist also die Präsentationsdatei, falls ja wird die Präsentation neu gestartet...

  • Ich glaub schon, ja ;)

    Du erstellst zunächst ein Script was beim Autostart von LXDE deine Präsentation startet und die "modification time" der Datei speichert:

    Crontabeintrag:

    Code
    * * * * *    /bin/bash /home/pi/presentation.sh cron >>/tmp/log.presentation 2>&1
  • Ich habe jetzt ein Skript Monitor.sh unter /home/pi/Documents/

    Dieses Skript hat folgenden Inhalt:


    unter /etc/xdg/lxsession/LXDE/autostart habe ich folgende Einträge:

    Code
    @lxpanel --profile LXDE
    @pcmanfm --desktop --profile LXDE
    @xscreensaver -no-splash
    @/bin/bash /home/pi/monitor.sh start

    der crontab sieht folgich aus:

    Code
    # Ausschalten des Pi um 10:15Uhr
    15 10 * * * /sbin/shutdown -h now
    # Start der neusten Präsentation/Neustart nach Änderung
    * * * * *    /bin/bash [i]/home/pi/Documents/[/i]Monitor.sh cron >>/tmp/log.monitor 2>&1

    Nachtrag:
    log.Monitor wurde erstellt.
    Crontab war mein Pfad falsch :blush:

    Leider öffnet sich keine Präsentation =(

    Einmal editiert, zuletzt von webtp (21. September 2016 um 15:34)

  • Dein Script ist nicht vollständig. Siehe Beitrag#5 das Script hat so viele Zeilen das der angezeigte Code-Block einen Scrollbalken halt. Du hast aber vergessen runter zu scrollen und auch den Rest zu kopieren :fies:

    Desweiteren legst du das Script als "/home/pi/Documents/Monitor.sh" an aber in "/etc/xdg/lxsession/LXDE/autostart" hast du nur "/home/pi/monitor.sh" eingetragen....

  • Vorlauter Bäumen den Wald nicht mehr gesehen.

    sudo nano /etc/xdg/lxsession/LXDE/autostart


    Code
    @lxpanel --profile LXDE
    @pcmanfm --desktop --profile LXDE
    @xscreensaver -no-splash
    @/bin/bash /home/pi/Documents/Monitor.sh start


    sudo nano /home/pi/Documents/Monitor.sh


    sudo crontab -e


    Code
    # Start der neusten Präsentation/Neustart nach Änderung
    
    
    * * * * *    /bin/bash /home/pi/Documents/Monitor.sh cron >>/tmp/log.Monitor 2>&1


    Leider start immer noch nichts :huh:

  • Und, steht was im Log?

    Noch zwei Tips:

    - Mit "touch -r $ACTUAL /home/pi/Documents/.last" kannst Du Dir das Erzeugen des timestamps sparen. Abfrage in der bash dann mit "[ $ACTUAL -nt /home/pi/Documents/.last ]".

    - "actual" heißt nicht "aktuell"...

  • Du musst erst eine kompatible soffice *.ppt Datei in /home/pi/Documents/Monitor hochladen, dann ein wenig warten zum Beispiel eine Minute und dann eine andere, mit anderem Namen, in das selbe Verzeichnis - erst dann würde das Script etwas tun


    //EDIT: wie die Variable heißt ist nebensächlich ;) Kannste auch den Namen XYZ geben :fies:


  • Das heißt mein Autostart von zuvor bleibt? und das Skript startet nur neu falls sich was ändert?

    Ja.

    Zitat


    Es gibt noch keine Datei mit .last im Verzeichnis :s

    Sicher? Dateien, deren Name mit "." (Punkt) beginnt, werden von ls normalerweise nicht angezeigt. Falls es sie wirklich nicht gibt: Hast Du Dich denn nach Erstellen des Skriptes und des Autostarts noch mal neu angemeldet?


    wie die Variable heißt ist nebensächlich ;) Kannste auch den Namen XYZ geben :fies:

    Natürlich. Aber sprechende Variablennamen finde ich immer besser. Und da wäre in diesem Fall eben "CURRENT" besser geeignet als der falsche Freund "ACTUAL", der eher "tatsächlich" bedeutet. Man kann ja auch in einem Computerforum mal was für sein Englisch tun... ;)

    Einmal editiert, zuletzt von Manul (21. September 2016 um 16:45)

  • .Last ist jetzt vorhanden :thumbs1:

    Edit:

    Es schließt die alte Präsentation aber öffnet nicht die Neue =(

    Ich hatte eine Präsentation Monitor.ppt und habe dazu eine Monitor-Kopie.ppt kopiert welche neuer ist. Nach 1 Minute wurde OpenOffice geschlossen aber es öffent sich nichts.
    Woran könnte das liegen?

    Einmal editiert, zuletzt von webtp (21. September 2016 um 17:02)

  • Da Du's ja nicht bearbeiten, sondern nur lesen willst, würde ich eher keinen Editor wie nano, sondern vermutlich "less" benutzen, aber natürlich solltest Du auch im Editor den Inhalt der Datei sehen. Zur Sicherheit: Du hast vorher ins /tmp-Verzeichnis gewechselt oder den vollen Pfad angegeben?

  • Ich habe ins das Verzeichnis gewechselt mit cd /tmp. Mit less ist das Log auch leer.
    Mal noch eine Verständnis Frage:
    Ich habe ja eine Präsentation die Monitor.ppt heißt wenn ich jetzt diese tauschen möchte dann kopiere ich jetzt eine Datei Namens Monitor-kopie.ppt ins das Verzeichnis. Das Skript stopt die Präsentation und öffnet die neue nicht. Mach ich etwas vielleicht flasch?

  • Jetzt kam etwas!

  • Sieht nach Leerzeichen im Dateinamen sowie nicht gesetzter DISPLAY-Variable aus. Versuch's mal so:

    Persönlich würde ich auch noch das "-9" beim pkill weglassen, oder gibt's da einen bestimmten Grund für meigrafd?

Jetzt mitmachen!

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