2010-06-22 15 views
8

Ich möchte Jobs über QSUB auf Sun Grid Engine (jetzt: Oracle Grid Engine?) Übermitteln. Ich möchte die Option -sync yes oder qrsh nicht verwenden, weil mein Steuerungsprogramm single-threaded sein und viele Jobs gleichzeitig starten soll. Diese Optionen blockieren den Thread meines Steuerungsprogramms.Abrufen des Exit-Codes aus einem mit qsub über Sun Grid Engine übermittelten Prozess

Allerdings möchte ich die Exit-Status der Prozesse erhalten, die ich starte. Von den man-Seiten scheint es keine Möglichkeit zu geben, diesen Code zu erhalten, ohne meinen Thread zu blockieren. Abgesehen davon, dass ich die Jobs, die ich gestarte, um ihre Exit-Codes auf stdout zu drucken, modifiziere, gibt es eine Möglichkeit, diesen Status zu erhalten?

Antwort

10

Die Antwort ist 'qacct -j'. Eine Zusammenfassung des Verlaufs des Jobs wird in stdout gedruckt, die dann für den Beendigungsstatus, Start- und Endzeiten und eine Vielzahl anderer Informationen analysiert werden kann.

SGE muss ordnungsgemäß konfiguriert sein, damit dieser Befehl funktioniert.

2

Wenn Sie Ihre Jobs innerhalb Ihrer Anwendung einreichen, verwendet die einfachste und schnellste Methode (schneller als das Senden mit Qsub) (und den Exit-Status später abrufen) die DRMAA-API. Diese einfache API ist in Sun Sun Grid Engine sehr lange in C und in Java verfügbar. Univa Grid Engine (kommerzieller Nachfolger von Grid Engine) und Sun Grid Engine liefern ebenfalls die benötigte Bibliothek. Da es sich um einen offenen Standard handelt, können Sie auch komplett andere DRMS ​​wie Condor/SLURM etc. einreichen, ohne Ihr Programm zu ändern. Sprachbindungen für GO, Python oder TCL (und andere) sind verfügbar.

See: http://www.gridengine.eu/mangridengine/htmlman3/drmaa_wait.html

Einige weitere Informationen und die Go (#golang) DRMAA Sprache mit Beispielen Bindung können Sie finden Sie hier: http://www.gridengine.eu/programming-apis

Prost

Daniel

www .gridengine.eu