Cronjob alle 50 Minuten

stäubel

stäubel

Doppel-As
Hallo zusammen

Ist zwar eine blöde Frage, aber wie würdet ihr einen Cronjob machen,
der alle 50 Minuten was ausführt?

Meine Gedanken:

Code:
*/50 *  *   *   *  würde immer jede und 50 Minuten nach jeder vollen Stunde ausgeführt

50 *  *  *  * würde immer 50 Minuten nach jeder vollen Stunde ausgeführt

Ich möchte aber, dass er wirklich allle 50 Minuten was ausführt,
nicht nach jeder vollen Stunde 50 Minuten.

Vielleicht sollte ich einfach Feierabend machen und es
morgen nochmals probieren :-)


Merci.

Grüsse Stäubel
 
Das erste Statment ist korrekt ...
Das dachte ich eigentlich auch. Jedefalls hatte ich das mal so gelernt.

Aber bei diesem Cronjob

Code:
*/50 *  *  *  *  echo Test | mail -s "Test" test@mail.ch

bekomme ich in folgenden Zeitabständen ein Mail:
(Anstatt alle 50 min)

Code:
Von     Betreff    Erhalten    Größe	
root    Test        10:00      4 KB		
root    Test        09:50      4 KB		
root    Test        09:00      4 KB		
root    Test        08:50      4 KB		
root    Test        08:00      4 KB		
root    Test        07:50      4 KB		
root    Test        07:00      4 KB		
root    Test        06:50      4 KB		
root    Test        06:00      4 KB		
root    Test        05:50      4 KB		
root    Test        05:00      4 KB		
root    Test        04:50      4 KB		
root    Test        04:00      4 KB		
root    Test        03:50      4 KB		
root    Test        03:00      4 KB		
root    Test        02:50      4 KB		
root    Test        02:00      4 KB		
root    Test        01:50      4 KB		
root    Test        01:00      4 KB		
root    Test        00:50      4 KB		
root    Test        00:00      4 KB

Grüsse Stäubel
 
Ich hab mal
Code:
*/3 * * * * root date +%H:%m:%S >> /home/user/cron.test
In meine crontab gepackt und warte nun, aber bisher (ca. ne viertel Stunde jetzt gewartet oder so) kam noch nix...
Wahrscheinlich kommts erst um 12:00 und dann nochmal um 12:03.

Vielleicht liegst ja auch an dem verwendeten crondaemon?
"ps aux|grep -i cron" sagt einfach "cron". "man cron" sagt
cron - daemon to execute scheduled commands (Vixie Cron)
:?

Edit: k, statt "date +%H:%m:%S" muss es natürlich "date +%H:%M:%S" heißen. (%m gibt den Monat an...)
ANYWHO, das ändert nix am Problem, dass die Zeile der crontab nicht das tut was man (laut Tutorials/Manpages) von ihr erwarten würde...

Mal die Interessanten Zeilen von "man crontab" dazu:
Step values can be used in conjunction with ranges. Following a range with ‘‘/<number>’’ specifies skips of the number’s value through the range. For example, ‘‘0-23/2’’ can be used in the hours field to specify command execution every other hour (the alternative in the V7 standard is 0,2,4,6,8,10,12,14,16,18,20,22’’). Steps are also permitted after an asterisk, so if you want to say ‘‘every two hours’’, just use ‘‘*/2’’.

Edit2: Meh, pipes funktionieren in den Kommandos der crontab aber keine STDOUT-Redirection mit ">>"? Hmz, mit einem (Bash-)Script scheints zu "funzen". Wobei das Problem des Threaderstellers damit ja nach wie vor besteht.
@TE: Du könntest ja alle 10 Minuten ein Script per cron starten, das prüft, ob die verstrichene Zeit an Minuten modulo 50 0 ergibt und dann das "eigentliche" Script startet (oder so). :0
Edit3:
Zun Beispiel das an den Anfang des Scripts packen und dann das Script per cron alle 10 Minuten ausführen lassen:
Code:
#!/bin/bash

SECONDS_NOW=$(date +%s)

INTERVAL=$((50 * 60)) # 50 minutes in seconds...

[[ $((SECONDS_NOW % INTERVAL)) -ge 15 ]] && exit 1
# 15 seconds tolerance
Sollte eigentlich funktionieren. (Nämlich dann, wenn %s zur vollen Stunde eine "runde" Zahl ist. Sollte es aber eigentlich. "seconds since 1970-01-01 00:00:00 UTC")
 
Zuletzt bearbeitet:
*arg* ... stimmt. Ein generelles "aller x Minuten" gibt es nicht ...
 
Vielen Dank für die Bemühungen und Vorschläge!!!

Das Script werde ich noch testen.

Aber wenn ich den Code so anschaue, gibt das Script glaube immer true am System zurück.

Denn wenn die Zeitangaben gut teilbar sind (fasst ohne Rest), wird $((SECONDS_NOW % INTERVAL)) -ge 15 ]] = true
Wenn die Zeitangaben schlecht teilbar sind (mit viel Rest), wird $((SECONDS_NOW % INTERVAL)) -ge 15 ]] = false jedoch durch && exit 1 auch wieder true.

Aber werde es noch testen.

Jedenfalls machte ich einen Überlegungsfehler bei Cron,
denn bei folgender Angabe */X * * * * muss X auf die
Stunde aufgehen.
Cron ist also definitiv nicht vorgesehen für solche Zeitabstände.

Schade eigentlich :headup:

Vielen Dank für eure Hilfe.

Grüsse Stäubel
 

Ähnliche Themen

Keine grafische Oberfläche (Debian Installation)

CentOS 6.4 kein schreibrecht auf gemountete ext4 HDD

Hardware RAID-0 kaputt / wird nicht mehr erkannt

Shell: parallelisieren von Berechnungsabläufen

Script alle paar Minuten starten

Zurück
Oben