Endlosschleife von Cron-Jobs mit mittlerer Ausgabe von jedem Job

1276
Community

Ich habe ein Programm, das Sachen zur Standardausgabe ausgibt. Ich benutze cron, um es zu planen, was in Ordnung ist, weil ich das Material sammle, das es per E-Mail ausgibt, und einige statistische Arbeiten dazu erledige. Ich möchte, dass dies im Wesentlichen für immer so weitergeht.

Ähnlich wie bei Frage 538622 möchte ich auch, dass der Job sich selbst "erneut einreicht", wenn er fertig ist. Dies kann nicht über ein Endlosschleife-Skript erfolgen, da ich ständig sammeln muss, was von cron per E-Mail gesendet wird.

Wenn möglich, möchte ich auch, dass N Jobs parallel laufen, wenn der Computer über N CPUs verfügt.

Bisher habe ich geplant, dass die Jobs alle X Minuten ausgeführt werden. Da der Computer jedoch von anderen verwendet wird, ist dies keine sehr effiziente Verwendung der Zeit, und es besteht die Gefahr, dass die Jobs mit meinen Jobs gefüllt werden. Dies dauert länger und länger ( so dass X Minuten nicht ausreichen).

Eine Idee, wie das geht?

0

1 Antwort auf die Frage

0
Lambert

Basierend auf dem Skript in der angegebenen Frage können Sie die Befehlsausgabe in eine Datei abrufen und den Dateiinhalt per E-Mail senden, nachdem eine Iteration abgeschlossen ist. In diesem Fall können Sie eine Endlosschleife haben. Wenn Sie nohup in den Hintergrund starten, kann sie ausgeführt werden, solange der Host aktiv ist.

Ein Beispielskript (in diesem Fall Parse.sh genannt) kann Folgendes sein:

while true do command &> /tmp/output_thread_$1 cat /tmp/output_thread_$1 | mail -s "output from thread $1" email@recipient done 

Wenn Sie das Skript mit aufrufen

for thread in 1 2 3 4; do nohup parse.sh $thread & done; 

Dabei ist 4 die Anzahl der CPU. Es werden (in diesem Fall) 4 Prozesse gestartet

Dies würde meine Aufgabe lösen, aber es verliert die nette Eigenschaft, dass sich cron mit der Standardausgabe per E-Mail befasst. vor 8 Jahren 0