CPU-Überlastung durch Bash-Spam

  • Hallo


    ich möchte mit meinem Raspberrypi alle 30 Sekunden ein Bild vom Himmel machen lassen, welches automatisch über Dropbox Uploader in die Dropbox geladen wird.


    Die Bilder werden über eine Logitech C170 mit Motion aufgenommen. Das funktioniert auch einwandfrei


    Um die Ordner zu erzeugen und die Bilder hochzuladen habe ich


    geschrieben (Überprüfen ob der Ordner mit Datum existiert, wenn nicht erstellen. Hochladen der Bilder über Dropbox Uploader). Es heißt DB_Uploader.sh


    Wenn ich es manuell Ausführe funktioniert es auch ganz fein, wenn ich den richtigen Zeitpunkt (und dementsprechend Dateiname) erwische.


    In der Motion config habe ich

    Code
    on_picture_save /etc/motion/Dropbox-Uploader/DB_Uploader.sh



    Ca. 10 Sekunden nachdem ich motion gestartet habe, geht die CPU-Auslastung plötzlich auf 100%, wo sie auch bleibt. Über top lässt sich dann feststellen, dass es sehr viele bash-Prozesse und DB_Uploader.sh gibt, alle sind von motion. Hochgeladen wird nichts, es kommt nichts in der Dropbox an, obwohl der Upload eigentlich weniger als 10 Sekunden dauert.
    Die ganzen Rechte müssten eigentlich stimmen.


    Da ich noch recht neu auf dem Gebiet bin, vermute ich mal, dass es sich nur um einen kleinen Fehler handelt.


    Danke für die Antworten
    Toburgl

  • Ich würd versuchen eine mehrfache Ausführung des Scripts zu unterbinden, sodass es also nur einmal zu ausgeführt werden kann:



    Probleme die damit auftreten könnten wäre wenn im späteren bash Code fehler auftreten wodurch das Script nicht bis zum schluss durch läuft, da dann das PiDFILE nicht gelöscht werden würde... Das müsste man durch eine Error-Handling function ausgleichen:


    Ausserdem würd ichs zunächst damit probieren das " & " am Ende der dropbox_uploader.sh Zeile weg zu lassen

  • Ich habe jetzt endlich nach laaangem herumprobieren das Problem gefunden;


    in Dropbox_Uploader.sh war der Pfad zur Konfigurationsdatei relativ angegeben (~/.dropbox_uploader)
    Das habe ich geändert zu /home/pi/.dropbox_uploader .
    Trotzdem wollte es nicht funktionieren, trotz passender Rechte.
    Ich habe herausgefunden, dass der Besitzer auch der Ausführende sein muss und mit chmod den Besitzer zu motion geändert.


    Jetzt funktioniert es.


    Danke für die Mithilfe
    Toburgl