Neustart bei Änderung einer Datei

  • 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...

  • meigrafd gab es diesen Fall im Forum schon einmal? Also die 1 Minute kann ich warten :) Ich dachte das es halt einfach ist wenn der pi neustartet, dann öffnet er die neue Präsentation eh.

  • 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 =(

    Edited once, last by webtp ().

  • 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:

  • 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?


    Edit:


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

    Edited once, last by webtp ().


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


    Ja.


    Quote


    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... ;)

  • .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?

    Edited once, last by webtp ().

  • 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?