Ausführen eines Cron-Jobs unter Linux alle sechs Stunden

139

Wie kann ich jeden Tag alle sechs Stunden einen Befehl ausführen?

Ich habe Folgendes versucht, aber es hat nicht funktioniert:

/6 * * * * *  mycommand
Gandalf StormCrow
quelle
7
Mögliches Duplikat von Wie man Crontab alle 2 Stunden laufen lässt
Cas
2
wie wäre es mit * * / 6 * * *
madalinivascu

Antworten:

323

Sie haben a vergessen *und zu viele Felder. Es ist die Stunde, um die Sie sich kümmern müssen

0 */6 * * * /path/to/mycommand

Dies bedeutet jede sechste Stunde ab 0, dh um die Stunden 0, 6, 12 und 18, als die Sie schreiben könnten

0 0,6,12,18 * * * /path/to/mycommand
nr
quelle
Vielen Dank für die Antwort, dies ist alle 6 Stunden ab welcher Zeit? die Zeit, in der der Cron erstellt wird?
Gandalf StormCrow
danke, wenn ich es also alle 6 Stunden ab 15:00 Uhr ausführen möchte, wäre es das 15 15,23,05,11 * * * /path/to/mycommand?
Gandalf StormCrow
5
Ja, obwohl das erste Feld die Minute ist, die Sie auf 15 gesetzt haben, bedeutet dies 15: 15,23: 15,05: 15 und 11:15. (was übrigens nicht jede 6. Stunde ist, hast du vielleicht gemeint 0 15,21,3,9 * * *)
Nr.
6

Sie sollten einen Pfad zu Ihrem Befehl angeben, da cron in einer stark reduzierten Umgebung ausgeführt wird. Sie haben nicht alle Umgebungsvariablen in Ihrer interaktiven Shell-Sitzung.

Es ist eine gute Idee, einen absoluten Pfad zu Ihrem Skript / Ihrer Binärdatei anzugeben oder PATH in der Crontab selbst zu definieren. Um das Debuggen von Problemen zu erleichtern, würde ich stdout / err auch in eine Protokolldatei umleiten.

Brian Agnew
quelle
1
danke für die Antwort, aber wenn ich Umgebungsvariablen in meiner sh-Datei deklariere, als ob ich export variable=somethingsie weiterhin in demselben Skript verwenden könnte? und ich benutze Datumsbefehl viel innerhalb des Skripts
Gandalf StormCrow
@Gandalf - Ja. Sie können alle Ihre env-Variablen im Skript definieren. Das ist eine gute Idee, da es bedeutet, dass Ihr Skript eigenständig und isoliert von anderen Dingen ist, die Sie möglicherweise innerhalb von cron ausführen möchten
Brian Agnew
5
0 */6 * * * command

Dies ist der perfekte Weg, um 6 Stunden am Tag zu sagen.

Ihr Befehl dauert sechs Minuten!

rkoots
quelle
2
@ArsenArsen Ich bin mir ziemlich sicher, dass es so war, weil es der bestehenden akzeptierten Antwort, die 4 Jahre zuvor geschrieben wurde, nichts wirklich hinzufügt.
Adinia
2

Bitte beachten Sie diese Syntax :

* */6 * * *

Dies bedeutet 60 Mal (jede Minute) alle 6 Stunden,

nicht

einmal alle 6 Stunden.

Andrea Bisello
quelle
0
0 */6 * * *

Crontab alle 6 Stunden ist ein häufig verwendeter Cron-Zeitplan.

Nilesh Patil
quelle
4
Was fügt diese Antwort hinzu, was die anderen Antworten nicht tun? @rkoots hat diesen genauen Befehl bereits erwähnt.
Auf Wiedersehen StackExchange
"Häufig verwendet" ? Warum? Können Sie das näher erläutern?
Peter Mortensen
0

Sie müssen * verwenden

0 */6 * * * /path/to/mycommand

Sie können auch auf https://crontab.guru/ verweisen, um die Planung zu verbessern ...

rkoots
quelle
-2

Versuchen:

0 */6 * * * command

. * muss

rkoots
quelle
1
Die letzte Zeile hier macht nicht viel Sinn. Würden Sie es erweitern?
halfer
1
sieht aus wie die Antwort unvollständig ist
Ajayramesh