[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Skriptfrage: Prozessor voll auslasten



Am Thu, 6 Jun 2013 06:15:00 +0200
schrieb Andre Tann <atann@alphasrv.net>:

> Hallo zusammen,
> 
> mir liegt eine Liste von Jobs vor, die jeder für sich ziemlich lange laufen, so zwischen zehn Minuten und eine Stunde pro Zeile:
> 
> sed ... Datei1 | sort...
> sed ... Datei2 | sort...
> ...
> sed ... Datei100 | sort...
> 
> 
> Wie kann man denn diese Jobs so starten, daß immer alle Prozessorkerne voll ausgelastet sind? Ein Job lastet ja nur einen von zB vier Kernen aus. Also will ich vier Jobs gleichzeitig starten, und sobald einer davon durch ist, soll gleich der nächste folgen.
> 
> Hat jemand einen (Lese-)Tip für mich?

Ich umreiße kurz wie es geht.

1. Dein Script startet sich x mal  im Hintergrund selber, dem du einen Ambersand & an den Befehl anhängst, dabei übergibt du einen Parameter, dass dein Skript weiss, dass jetzt was arbeiten soll. Danach beendet sich dein Script.

2. Im Script muss natürlich als erstes geprüft werden ob der Parameter gesetzt ist und dann in die Arbeitsroutine verzweigt.

3. Die Arbeitsroutine besteht aus einer Endlosschleife.

4. In der Endlosschleife wird als erstes die nächste abzuarbeitende Datei festgestellt. Gibt es keine solche Datei ist die Arbeit beendet, und die Schleife wird abgebochen.

5. Die Datei wird umbenannt/verschoben. Geht das Umbenennen schief, weil die Datei nicht mehr existiert, war ein anderer Prozess schneller und es soll die nächste Datei abgearbeitet werden. Es wird also an den Schleifenanfang gesprungen. Die umbenannte/verschobene Datei darf natürlich in Schritt 4. nicht mehr auftauchen.

6. Die Umbenannte/verschobene Datei wird bearbeitet.

7. Die nächste Datei soll bearbeitet werden. Die Schleife ist geschlossen.

8. Nach der Endlosschleife wird das Script beendet.


Grüße
Michael




-- 


Reply to: