Einfache crontab Frage

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
fragenfrager
Beiträge: 658
Registriert: 31.12.2003 08:47:15

Einfache crontab Frage

Beitrag von fragenfrager » 21.04.2014 14:27:28

Wann wird dieser Befehl gemacht:

Code: Alles auswählen

0/5 * * * *
Ich weiß, dass

Code: Alles auswählen

*/5 * * * *
jede 5 Minuten den Befehl ausführt. Aber wann wird damit bekonnen? Zu jeder möglichen Minute? Dann wird in der oberen Frage nur zur vollen Stunde begonnen, ist das richtig?

Benutzeravatar
4A4B
Beiträge: 981
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Einfache crontab Frage

Beitrag von 4A4B » 21.04.2014 14:36:08

"0/5" kommt denke ich auf das gleiche hinaus wie "0" - also zu jeder vollen Stunde

Du kannst vorne einen Range angeben:

Code: Alles auswählen

0-15/5 * * * *
Der Befehl würde dann zu den Minuten 0, 5, 10 und 15 ausgeführt

Siehe auch "man 5 crontab":
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 execu‐
tion 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''.

Benutzeravatar
GregorS
Beiträge: 3232
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Einfache crontab Frage

Beitrag von GregorS » 22.04.2014 00:57:34

4A4B hat geschrieben:Siehe auch "man 5 crontab":
Dass die Doku zu crontab nicht stimmt, durfte ich soeben selbst herausfinden. Trotz einer gesetzten EDITOR-Umgebungsvariable („EDITOR=emacs“ + anschließende Prüfung mit „echo $EDITOR“) wurde nano gestartet. Was ich somit von der Doku halte, kann man sich denken.

Aber zur Frage des OP: Ich habe meine Crontab einmal entsprechend bearbeitet und die Zeilen

Code: Alles auswählen

*/5 * * * * date >> ~/temp/temp.txt
0/5 * * * * date >> ~/temp/temp2.txt
hinzugefügt. Nach ein paar Minuten (in denen ich bis hierhin getippt habe), existierte die Datei ~/temp/temp.txt, die genau eine Zeile enthielt, nämlich:

Code: Alles auswählen

Di 22. Apr 00:45:01 CEST 2014
~/temp/temp2.txt existierte noch nicht, obwohl ich fest damit gerechnet hatte und was nach meinem Verständnis der Manpage auch hätte sein müssen.

Auch um 00:50:27 existierte temp2 noch nicht, temp.txt hingegen hatte bereits die erwarteten zwei Zeilen.

Demnach bringt eine Zeile, die mit „0/5“ beginnt, genau gar nichts, erzeugt aber auch keine Fehlermeldung, was IMO der Fall sein müsste. Wenn die Zeile hingegen mit „*/5“ beginnt, wird bei jeder ohne Rest durch fünf teilbaren Minute der entsprechende Befehl ausgeführt.

In meinen Augen ist das wieder einmal ein Beleg dafür, dass Manpages zunehmend überflüssig sind und dass ich wo immer möglich nur dem Vertraue, was ich überprüfen konnte.

HTH

Gregor

Nachtrag: Um 01:00:10 existierte temp2.txt dann doch noch. Die Zeile mit der Null am Anfang wird vermutlich nur bei einstelligen Stunden (01 ...09 Uhr) ausgeführt.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Einfache crontab Frage

Beitrag von Cae » 22.04.2014 01:12:39

GregorS hat geschrieben:
4A4B hat geschrieben:Siehe auch "man 5 crontab":
Dass die Doku zu crontab nicht stimmt, durfte ich soeben selbst herausfinden. Trotz einer gesetzten EDITOR-Umgebungsvariable („EDITOR=emacs“ + anschließende Prüfung mit „echo $EDITOR“) wurde nano gestartet. Was ich somit von der Doku halte, kann man sich denken.
Guck' mal, ob $VISUAL gesetzt ist, denn diese Variable wird zuerst verwendet, sofern gesetzt:
crontab(1) hat geschrieben:

Code: Alles auswählen

specified  by  the  VISUAL  or EDITOR environment variables.
Es wird zwar nicht extra betont, dass es eine Rangordnung hat, aber die Reihenfolge erschliesst sich direkt aus der Textleserichtung (und ist gerade bei $VISUAL und $EDITOR genauso ueblich).

Entsprechend funktioniert

Code: Alles auswählen

$ VISUAL=ed crontab -e
bzw.

Code: Alles auswählen

$ export VISUAL=ed
$ crontab -e
hervorragend.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
GregorS
Beiträge: 3232
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Einfache crontab Frage

Beitrag von GregorS » 22.04.2014 01:16:56

Cae hat geschrieben:Guck' mal, ...
„Zur Sicherheit“ habe ich inzwischen zusätzlich zu EDITOR auch VISUAL gesetzt, beides auf emacs.

Gestartet wird jedoch trotzdem nano. Keine Fehlermeldung.

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
GregorS
Beiträge: 3232
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Einfache crontab Frage

Beitrag von GregorS » 22.04.2014 01:29:25

GregorS hat geschrieben:
Cae hat geschrieben:Guck' mal, ...
„Zur Sicherheit“ habe ich inzwischen zusätzlich zu EDITOR auch VISUAL gesetzt, beides auf emacs.

Gestartet wird jedoch trotzdem nano. Keine Fehlermeldung.

Gruß

Gregor
Nachtrag für den OP: Ich habe mich vertan. Die erste Angabe in einer Zeile bezeichnet ja nicht die Stunde, sondern die Minute. 0/5 am Anfang bewirkt, dass nur in der nullten Minute geloggt wird.
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
4A4B
Beiträge: 981
Registriert: 09.11.2011 11:19:55
Kontaktdaten:

Re: Einfache crontab Frage

Beitrag von 4A4B » 22.04.2014 01:53:36

GregorS hat geschrieben:0/5 am Anfang bewirkt, dass nur in der nullten Minute geloggt wird.
Genauso wie ich geschrieben hatte:
4A4B hat geschrieben:"0/5" kommt denke ich auf das gleiche hinaus wie "0" - also zu jeder vollen Stunde
Nochmal zur Erläuterung:

Die "0" in "0/5" stellt den Range dar, "0/5" bedeutet also: alle 5 Minuten in dem Range von 0 bis 0. Die "/5" in "0/5" ergeben so gesehen keinen großen Sinn, und du kannst genauso gut einfach "0" schreiben.

Antworten