batch

pchris

Well-Known Member
Ich habe eine Verständnisfrage zum 'batch'-Befehl. In der manpage steht dazu Folgendes:
Code:
     batch   executes commands when system load levels permit; in other words,
             when the load average drops below 1.5, or the value specified in
             the invocation of atrun.

Momentan laufen hier am Rechner fünf ffmpeg parallel, die Videos konvertieren. Diese habe ich alle gleichzeitig mit 'batch' in die Warteschlange gestellt. Zum Testen habe ich nun noch einen sechsten Job reingestellt:
Code:
christoph@sonne:~ % batch
uptime
Die Ausgabe von diesem war dann:
Code:
Date: Sun, 9 Aug 2015 15:55:00 +0200 (CEST)
From: Atrun Service <christoph@sonne>
Subject: Output from your job E0004a016dfd41
To: undisclosed-recipients:;

 3:55pm  up 1 day,  3:38, 1 user, load averages: 9,52 9,93 9,90

Sollte dieser sechste Job eigentlich nicht warten, bis die Systemauslastung wieder unter 1.5 gesunken ist?
 
Die Doku ist das etwas fischig, um nicht zu sagen hart an der Grenze der Lüge. Cron ruft alle 5 Minuten atrun(8) auf. Der Eintrag ist in der /etc/crontab. atrun(8) schaut dann, ob at(1) oder batch(1) Jobs in der Queue liegen und ausgeführt werden müssen. Wenn atrun(8) das -l Argument nicht übergeben wurde, wie es in Standardeinstellung der Fall ist, wird laut der Job ausgeführt wenn die Load Avarage unter 1,5 * Anzahl der CPUs liegt. Dieses kleine Detail mit der Anzahl der CPUs verschweigt die Manpage, wahrscheinlich wurde es bei der Einführung von SMP vor inzwischen fast 20 Jahren vergessen und es hat nie jemand gemerkt. Wenn du also 8 Kerne / Threads hast, wird bei einem Load von 1,5 * 8 = 12 ausgeführt.
 
Mir wurde durch den Thread erstmal klar, dass es batch noch gibt. Das hab ich glaub ich noch nie benutzt. :)
 
Mein Prozessor (Pentium D 820) hat eigentlich nur zwei Kerne. Daher sollte er eigentlich ab einer Last von 3.0 nichts mehr starten.

@TCM: Ich habe es auch erst vor kurzem entdeckt. Finde es ganz praktisch für Aufgaben, die einfach im Hintergrund auch nach einem Logout weiterlaufen bzw. mit 'at' erst ab einer bestimmten Uhrzeit starten sollen.
 
Zurück
Oben