2016-03-21 5 views
1

Ich möchte alle Ausgaben von GROMACS 5.1.2 drucken.So drucken Sie alles, was gedruckt wird und auf Terminal

Ich weiß, wie > und < für std zu verwenden und aus, auch 2>&1 versucht, Fehler und Ausgang zusammen zu drucken, versucht separat zu, wird es immer noch nicht alles drucken, vor allem einige nützliche Hinweise am Ende, wenn es mir sagt, Was war das Problem und ich brauche diese Informationen.

Ich denke, das wird nicht gespeichert, weil es aus einem anderen Code kommt, führt das Hauptprogramm ein Unterprogramm, und das stürzt ab, und ich bekomme den Bericht nur auf dem Bildschirm. Ich werde in der Ausgabe haben, dass etwas schief gelaufen ist, und was das ist, aber auf dem Bildschirm habe ich viel mehr Informationen.

Wenn jemand eine Idee hat, wie ich das tun könnte, würde ich es wirklich schätzen.

Auch ich bin nicht vollständig noob, aber wenn Sie in Ihrer Erklärung explizit sein können, wird das sehr geschätzt.

Zum Beispiel, wenn Sie gmx pdb2gmx Befehl mit den 3mlj.pdb von RCBS Protein-Datenbank, um versuchen mögen, auf dem Bildschirm werde ich lese:

Fatal error: 
Residue 'CU' not found in residue topology database 

Aber in der Standardausgabe werde ich nur lesen:

This chain does not appear to contain a recognized chain molecule. 

Für mir, dass CU wirklich wichtige Information ist, und das ist nur ein Beispiel.

Ich teile mein Betriebssystem hier:

$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 14.04.4 LTS 
Release: 14.04 
Codename: trusty 

auch versucht, auf das mit dem exakt gleichen Ergebnis:

$ lsb_release -a 
No LSB modules are available. 
Distributor ID: Ubuntu 
Description: Ubuntu 15.10 
Release: 15.10 
Codename: wily 

Mein Bash-Skript, das ich für Batch-Dateien ausgeführt werden soll:

+3

'Befehl 2> & 1 'ist nicht für Sie arbeiten? Welches Betriebssystem? bitte genaues Beispiel für die Befehlszeilen hinzufügen –

+0

ich meine ubuntu Version in meiner Beschreibung und meinen Bash-Skript enthalten habe. – Csongor

+0

Gibt es eine Ausgabe mit der „Fatal Error“ -Meldung (Datei, Zeilennummer, etc.)? –

Antwort

1

Sie müssen E/A-Umleitungen in der richtigen Reihenfolge (von links nach rechts) durchführen.

Sie haben:

gmx pdb2gmx … -i ${infile/pdb/itp} 2>&1 > ${infile/pdb/err} 

Dieser Standardfehler sendet, wo die Standardausgabe wird zur Zeit gehen (das Terminal) und sendet dann die Standardausgabe (aber nicht Standardfehler) in einer Datei.

Sie benötigen:

gmx pdb2gmx … -i ${infile/pdb/itp} > ${infile/pdb/err} 2>&1 

Diese in einer Datei die Standardausgabe sendet und sendet dann den Standardfehler an der gleichen Stelle. Beachten Sie, dass in beiden Systemen immer noch zwei separate Dateideskriptoren (1 oder Standardausgabe und 2 oder Standardfehler) verwendet werden; Die einzige Frage ist, mit welcher Datei der Dateideskriptor verbunden ist.

Wenn Sie Daten piped, wird die Pipe eingerichtet, bevor andere E/A-Umleitungen behandelt werden, aber ansonsten werden E/A-Umleitungen pro Befehl von links nach rechts verarbeitet.

Siehe auch How to pipe stderr and not stdout und Bash I/O Redirections.

+0

Vielen Dank, das hat das Problem tatsächlich gelöst. Ich dachte, ich habe zuerst den Computer sagen, dass ich beide an den gleichen Ort gehen wollen, und als sie sagen, wo das ist, aber jetzt verstehe ich. (Und ich dachte, ich weiß, wie man es benutzt) Nochmals vielen Dank – Csongor

Verwandte Themen