Ottenere il codice di uscita da un processo inviato con qsub su Sun Grid Engine
-
29-09-2019 - |
Domanda
Vorrei inviare lavori tramite qsub su Sun Grid Engine (ora:Oracle Grid Engine?).Non desidero utilizzare l'opzione -sync yes o qrsh, perché voglio che il mio programma di controllo sia a thread singolo e in grado di avviare molti lavori contemporaneamente.Queste opzioni bloccherebbero il thread del mio programma di controllo.
Vorrei però ricevere gli stati di uscita dei processi che lancio.Dalle pagine man, sembra che non ci sia modo di ottenere questo codice senza bloccare il mio thread.A meno di modificare i lavori che sto avviando per stampare i relativi codici di uscita su stdout, esiste un modo per ottenere questo stato?
Soluzione
La risposta è 'qacct -j'. Un riassunto della storia del lavoro viene stampato sullo standard output, che possono poi essere analizzato per lo stato di uscita, inizio e fine, e una varietà di altre informazioni.
SGE deve essere configurato correttamente per questo comando per lavoro, comunque.
Altri suggerimenti
Se stai inviando i tuoi lavori all'interno della tua domanda, il modo più semplice e veloce (più veloce dell'invio con qsub) (e ottenendo lo stato di uscita in un secondo momento) è utilizzare l'API DRMAA.Questa semplice API è disponibile in C e in Java in Sun Grid Engine da molto tempo.Anche Univa Grid Engine (successore commerciale di Grid Engine) e Sun Grid Engine forniscono la libreria necessaria.Poiché si tratta di uno standard aperto è possibile sottomettersi anche a DRMS completamente diversi come Condor/SLURM ecc.senza cambiare il tuo programma.Sono disponibili collegamenti linguistici per GO, Python o TCL (e altri).
Vedere:http://www.gridengine.eu/mangridengine/htmlman3/drmaa_wait.html
Alcune ulteriori informazioni e Go (#Golang) Drmaa Language Binding con esempi che puoi trovare qui:http://www.gridengine.eu/programming-apis
Saluti
Daniele
www.gridengine.eu