bash in crontab pro stunde ausführen

  • Hallo zusammen



    ich habe eine bash datei, welches pro stunde, mit ein cronjob ausgeführt werden muss.


    einstellung im crontab:


    0 */1 * * * /home/pi/Desktop/bash/test.sh


    "@hourly" auch bereits probiert, ohne erfolg.



    einstellung im bash:


    #!/bin/bash


    export DISPLAY=:0


    export XAUTHORITY=/hhome/pi/.Xauthority


    sleep 55


    xdotool mousemove 1314 752 click 1


    sleep 10


    xdotool mousemove 1360 788 click 1


    sleep 10


    xdotool mousemove 1582 146 click 1



    anhand logverlauf "systemctl status cron", ist folgendes herausgekommen:



    Nov 14 14:01:16 raspberrypi CRON[5750]: pam_unix(cron:session): session closed for user pi


    Nov 14 14:17:01 raspberrypi CRON[6421]: pam_unix(cron:session): session opened for user root by (uid=0)


    Nov 14 14:17:01 raspberrypi CRON[6422]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)


    Nov 14 14:17:01 raspberrypi CRON[6421]: pam_unix(cron:session): session closed for user root



    So wie es aussieht, schliesst der crontab bei root oder pi bzw. es führt den Befehl nicht mehr aus.



    weiss jemand wie man die session offen lassen kann , wenn das überhaupt nötig ist ?



    danke und gruss

  • Bist du sicher das das Doppel H passt in Home

    Kann ich entfernen.

    Allgemein funktioniert der bash, wenn es manuell ausgeführt wird.

    Jedoch der crontab führt es nach einer Stunde aus und dann nicht mehr.

  • Dein Cronjob wird als User root im Hintergrund (non interactive) gestartet. Er hat daher keine Verbindung zu einem Ein-/Ausgabegerät und der User root hat normalerweise auch kein Grafiksystem.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Es führt nun jeweils um die ganze uhrzeit aus 18:00, 19:00 etc.


    möglicherweise war es wegen den pfad "/bin/bash", welches nicht eingetragen wurde.


    es zeigt mir zwar "session closed for user pi" an, trotzdem wird es ausgeführt.


    vielen dank

  • es zeigt mir zwar "session closed for user pi" an, trotzdem wird es ausgeführt.

    Das ist normal, der cron-Daemon arbeitet deine cronjobs ab und schliesst die Sitzung dann. Zum nächsten Termin das Ganze von vorn.

    Wenn du nichts zu sagen hast, sag einfach nichts.

  • Ja es funktioniert.

    Jedoch die Zeiteinstellung im crontab verstehe ich nicht ganz.

    Edited once, last by pio ().

  • Habe ich bereits ausprobiert.


    Neu möchte ich es nicht 1 Stunde, sondern 1 Stunde und 10 min, also 70 min (4200s).

    Jedoch funktioniert das beim crontab nicht. Zumindest bei mir.

    Kann der crontab mit sleep angewendet werden ?


    Code
    * * * * * sleep 4200 /bin/bash /home/pi/Desktop/bash/test.sh
  • Neu möchte ich es nicht 1 Stunde, sondern 1 Stunde und 10 min, also 70 min (4200s).

    Dann würd ich eine Timer Unit verwenden


    Kann der crontab mit sleep angewendet werden ?

    Jein, denn der Zeitabstand verschiebt sich ja dann jedesmal.

    Jein deswegen, ja du kannst ein sleep setzen, nein weil es nicht zum gewünschten Erfolg führt

  • Code
    * * * * *  /bin/bash sleep 4200 && /home/pi/Desktop/bash/test.sh

    Sorum wäre es richtig (die Syntax hinter den Sternchen), aber egal. Selbst wenn Du damit den Start verzögerst, wird der Job (Skript) jede Minute neu gestartet und gewartet und das Skript gestartet usw. ;)

  • * * * * * /bin/bash sleep 4200 && ...


    Dann hast du 69 sleeps in Wartestellung und anschliessend einen Haufen in minütlichen Abstand ausgeführte test.sh...


    Wie Hofei schon sagte, timer-Unit dürfte das Mittel der Wahl sein.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Edited once, last by llutz ().