Cronjob auf Unifi Dreamrouter funktioniert nicht (Lüftersteuerung)

Es gibt 6 Antworten in diesem Thema, welches 1.401 mal aufgerufen wurde. Der letzte Beitrag () ist von gierig.

  • Hallo zusammen,



    ich habe mir einen Dreamrouter gekauft und er ist schrecklich laut, wenn man sich in der Nähe aufhält.

    Nach ein paar Stunden googeln bin ich zunächst auf ein paar SSH Befehle und dann auf ein Script gestoßen.

    Das Script heißt fanspeed.sh, liegt im home-Verzeichnis von root, hat chmod +x /root/fanspeed.sh bekommen und soll nun als cronjob laufen.

    Also habe ich die folgende Zeile mit crontab -e hinzugefügt:


    1 * * * * /root/fanspeed.sh >/dev/null 2>&1

    Allerdings wird das Skript gar nicht ausgelöst (anstatt 1x pro Minute, wie ich es erwarten würde)

    Hat jemand da einen Tipp für mich?


    P.S.: Das Script ist aus diesem Beitrag: https://community.ui.com/quest…ba-4d95-969c-8407590a3541

  • Dein Script Funktioniert wenn du es von Hand startest ?


    FW Version von UDR ? Irgendwann gab nen neuen Debian Unterbau.

    Dabei wurde der CRON geändert und benötigt einen user nach dem Zeitangaben.


    Code
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # | .------------- hour (0 - 23)
    # | | .---------- day of month (1 - 31)
    # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
    # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # | | | | |
    # * * * * * user-name command to be executed
    # 1 * * * * root /data/scripts/tunnel.sh

    Ob das so bei dir ist, schau in die corntab Datei, da sind ja ein paar drinnen..


    Leerzeile am Ende nicht vergessen...

  • Ja, das Skript funktioniert, wenn ich es von Hand starte: Es checkt die Temperatur und regelt den Lüfter dementsprechend von der Drehzahl her runter oder rauf, um die Temperatur des Chips bei 55 Grad max zu halten.

    Die Firmware Version ist die Neuste beta: UDR-3.1.14


    In meiner crontab Datei sind leider überhaupt keine Einträge.

    Vielen Dank für den Tipp mit dem User. Ich versuche das mit dem User morgen gleich nach dem Aufstehen.

    Es müsste dann also 1 * * * * root /root/fanspeed.sh >/dev/null 2>&1 heißen? Oder würde dieses Skript dann nur jede Stunde in Minute 1 ausgelöst?

  • Falls es das user Problem nicht gewesen sein sollte, dann schau vielleicht mal, was Dein Script so alles aufruft und schaue nach den Pfaden. Ein altbekanntes Problem von crond ist, daß er, anders als die Interaktive Shell, keine .profile oder .bashrc sourcet und daher die $PATH Variable bei der Ausführung von cron Scripten nur rudimentär (wenn überhaupt) gesetzt ist. Abhilfe kann schaffen, sämtliche Programmaufrufe mit absoluten statt relativen Pfaden zu verwenden - also nur als Beispiel /usr/local/bin/myprogram ... statt nur myprogram ....

    Unter /var/log/cron (oder so ähnlich) könntest Du auch mal schauen, ob der crond irgendwelche Fehler loggt, wenn er versucht, das Script laufen zu lassen.

    3 Mal editiert, zuletzt von McCavity ()

    • Hilfreich

    In meiner crontab Datei sind leider überhaupt keine Einträge.

    Sehe grade, dass du mit crontab -e eine user Cron anlegst, da gilt die "alte" Struktur, weil der zu ausführende

    User ist ja bekannt. Das sollte dann so funktionieren (Leerzeile nach am Schluss ist wichtig).


    Als test kannt du ja

    */2 * * * * echo "Moin!" >> /root/cronlog.log


    was dir alle zwei Minuten Moin in die die /root/cronlog.log schreibt...

    Was bei die dann fehlt sind wahrscheinlich Pfade.


    Bin irgendwie davon Ausgegangen, dass du die /etc/crontab meinst oder halt ein eigenes File

    in /etc/cron.d/. Und das würde ich auch eher vorschlagen als eine USER Crontab.


    Lege ein Datei fanspeed in /etc/cron.d an

    (da sollten auch Beispiele drinnen sein)


    Code
    ## Crontab entry
    
    
    MAILTO=""
    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    
    @reboot root /root/fanspeed.sh >/dev/null 2>&1
    1 * * * * root /root/fanspeed.sh >/dev/null 2>&1


    Da ist dann alles drinnen was wichtig ist...

    und JA: fanspeed.sh würde hier nach dem Reboot und immer in Minute 1 zu jeder Stunde ausgeführt.

  • Guten Morgen und vielen lieben Dank!
    Ich habe eine fanspeed Datei in /etc/cron.d angelegt und Deine Musterdatei verwendet.
    Schon direkt beim speichern wurde der Lüfter gedrosselt. (Habs zunächst testweise auf */1 angepasst.

    Das Skript übersteht sogar die reboots, womit ich nicht gerechnet habe.

    Danke, danke, danke !!!!

  • Das Skript übersteht sogar die reboots, womit ich nicht gerechnet habe.

    Nur die 1.x Firmware auf der UDM hat mit Containern gearbeitet, da muss über Seitenwege dafür gesorgt werden das die Config beim Boot wider erstellt wird. Das ist ab der 2.x Geschichte... das meiste an Config überlebt auch ein FW Update..

    Einmal editiert, zuletzt von gierig ()