Ich habe die folgende Syntax (von der ich glaube, dass sie richtig ist?), aber der Befehl wird jede Minute ausgeführt!
* */4 * * * /cmd.sh
Antwort1
0 0,4,8,12,16,20 * * * /cmd.sh
So würde ich es wahrscheinlich machen. Dadurch wird der Job alle 4 Stunden ausgeführt, und zwar um 00:00, 04:00, 08:00, 12:00, 16:00 und 20:00 Uhr.
Dies ist lediglich eine etwas ausführlichere Art, */4 zu schreiben, sollte aber genauso funktionieren.
Antwort2
Im Originalbeitrag wurde die Konfiguration vor der Bearbeitung wie folgt dargestellt:
- */4 * * * /cmd.sh
Der Verfasser war mit Markdown nicht vertraut und hat in die erste Spalte ein Sternchen eingefügt, sodass es als Aufzählungszeichen angezeigt wurde. Ich habe seinen Beitrag bearbeitet, um wiederzugeben, was er veröffentlichen wollte:
* */4 * * * /cmd.sh
In dieser Konfiguration würde der Verfasser das von ihm beobachtete Verhalten erhalten: Der Job wird einmal pro Minute während Stunden ausgeführt, die gleichmäßig durch 4 teilbar sind.
Um zu vermeiden, dass es einmal pro Minute ausgeführt wird, ist in der ersten Spalte eine Zahl erforderlich, etwa wie folgt:
15 * * * * whatever...
Diese läuft jeweils in der 15. Minute nach der vollen Stunde.
Alles in allem: Um einmal pro Stunde während der Stunden zu laufen, die gleichmäßig durch 4 teilbar sind, verwenden Sie diese Syntax:
15 */4 * * * whatever...
Antwort3
Führen Sie einen crontab -e aus und fügen Sie dann den folgenden Eintrag hinzu
0 */4 * * * Pfad_zum_Skript
Dadurch wird das Skript alle 4 Stunden ausgeführt.
Antwort4
Das Problem ist das * in der ersten Spalte
' * */2 * * * /Pfad zum Skript '
das bedeutet, dass du jede Minute der Stunde läufst, aber nur alle 2 Stunden