2017-12-12 11 views
3

Hallo zu laufen Ich habe eine grundlegende cron, die meine Sachen läuft zweimal am Tag bei 1 und 6. So etwas wie:Wie Einrichten von cron einmal täglich zufällig mal so gerade jetzt

H 1,18 * * * 

Das Problem ist, Ich habe zu dieser Zeit 100 Dinge, die meine Maschine verstopfen. Ich möchte nach dem Zufallsprinzip einmal pro Tag für jeden Job eine Zeit generieren. Es ist in Ordnung, wenn 5-7 gleichzeitig gehen. Also ich denke meine Frage ist. Zum einen ist das möglich? Wenn ja, gibt es dafür eine Best Practice? Ich lade alles in groovy, so dachte ich nur um eine Zahl zwischen 1-24 Erzeugen und Hinzufügen zu diesem:

cron('H 1,18 * * *') 

wenn das möglich ist. Aber ich glaube, das würde mich immer noch verstopfen, da ich so viele Dinge angefangen habe.

Antwort

1

Nun, es gibt keine Syntax, um genau das zu tun, was mir bekannt ist (obwohl Sie einige Cluddges in bash nachholen könnten, die Crontabs jede Nacht automatisch regenerieren würden, sagen). Aber warum? Sie müssen keine zufälligen Zeiten jeden Tag gemäß Ihrer Beschreibung generieren. Sie müssen es einmal zufällig randomisieren und diese zufälligen Zeiten einmal in Ihre Crontab schreiben.

Also, rollen Sie einige Würfel, oder verwenden Sie einige grundlegende RND-Nummer Generator. Oder, noch besser, verteilen Sie sie gleichmäßig - sagen Sie jede Stunde, die Sie eine Handvoll Prozesse in Ihrem contab starten. Warum brauchst du etwas Komplizierteres? Dies ist, wie es sowieso getan ..

+0

Deshalb fragte ich, ich implementierte es in groovy. Aber ich war neugierig, ob es eine bessere Praxis/Norm gab. Klingt aber nicht so. –

0

Ich weiß nicht, ob Sie dies tatsächlich mit Cron tun können, aber wenn Sie Zugriff auf systemd Timers and services haben (und sie sind in der Regel in modernen Linux aus mindestens ein paar Jahren zurück), können Sie in der Lage sein, ein zeitgesteuertes System zu installieren.

Werfen Sie ein kleines Shell-Skript, das nach dem Zufallsprinzip schläft und Null zurückgibt, oder verwenden Sie einfach die Timer, um den Inhalt beim Start zu verzögern.

1

ich mit diesem ging:

H H(0-7) * * * 

die es eine zufällige Zeit, um zwischen 12 und 7, die ist gut für mich zu sein scheint. Sie könnten auch etwas tun wie:

def rand = Math.abs(new Random().nextInt() % 24) + 1; 
    triggers { 
     githubPush() 
     cron('H ' + rand + ' * * *') 
    } 

aber scheint extra, was ich getan habe.

Verwandte Themen