Lüfter Bash Script mit "Sleep" Funktion trotz Crontab ?

  • Hi zusammen,

    bin bissl am rumbasteln mit dem Lüfterscript, das läuft aktuell im Crontab alle 2 Minuten wird die Temperatur geprüft und dementsprechend läuft der Lüfter an.

    Jetzt möchte ich aber noch eine Art Sleep Funktion einbauen, das der Lüfter vor dem Ausschalten so 3-4 Minuten weiterläuft. (anstatt nach 2 Minuten Crontab)

    Mit Sleep xx klappt es nicht warum auch immer, theoretisch müsste das Script ja wenn die Temperatur unter 47 Grad ist erst in den sleep gehen bevor der Lüfter gestoppt wird.
    Macht er aber nicht genau nach 2 Minuten Crontab geht der Lüfter aus.

  • Was triggert denn der Cronjob genau? Saß Script oder was anderes?

    Magst du mal ein "crontab -l" posten? Oder zumindest das, was uns zeigt, was der Cronjob macht.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Abgesehen davon, dass ich gerade noch nicht weiß, warum der "sleep" nicht greift, hast du aber noch ein Timing-Problem.

    Du triggerst alle 2 Minuten ein Script, welches im bestimmten Fall ggf. einen 5 minütigen Sleep hat. Der Sleep ist dem Cronjob aber egal. Der Cronjob wird abermals nach 2 Minuten ausgeführt und somit wieder das script getriggert, welches dann wieder einen 5 Minuten Sleep hat.

    Ich würde ggf. noch einen Test ausführen. Sowas in die Richtung:

    Code
    if [ $CPU_TEMP -gt $(( $THRESHOLD * 1000 )) ]
      then
        echo "1" > /sys/class/gpio/gpio$GPIO/value;
    else
        value=$(cat /sys/class/gpio/gpio$GPIO/value)
        if [$value -ne "0" ]; then
          sleep 300
          echo "0" > /sys/class/gpio/gpio$GPIO/value;
        fi
    fi


    Das würde erstmal verhindern, dass der Sleep alle 2 Minuten ausgeführt wird, wenn die Temp unter 47° ist und es das vor 2 Minuten auch schon war (denn dann steht schon die "0" in der Datei.

    Wertschätzung kostet nichts, aber sie ist von unschätzbarem Wert.

  • Ja das war mir schon bewusst das der Cronjob nach 2 Minuten triggert, ich dachte nur wenn die CPU Temp dann nach 2 Minuten bereits unten ist wird ja normalerweise ELSE benutzt weil der IF Parameter nicht greift.

    Also müsste ja dann der Sleep Befehl ausgeführt werden.

    Wobei ich dann zumindest vor dem abschalten GPIO 0 in eine Schleife komme fällt mir auf.

    Weil ja alle 2 Minuten getriggert wird und immer wenn die CPU Temp noch nicht so hoch ist wie angegeben gehe ich in Sleep und der Sleep ist immer länger wie der Cronjob also Dauerschleife solang die Temperatur noch nicht über dem Wert liegt.

    Ergo würde er dann nie abschalten solang die Temperatur noch nicht über dem Wert liegt.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!