12.07.2015 Aufrufe

5.¨Ubungsaufgabe: Praktische UNIX-Befehle und Shell-Skripte

5.¨Ubungsaufgabe: Praktische UNIX-Befehle und Shell-Skripte

5.¨Ubungsaufgabe: Praktische UNIX-Befehle und Shell-Skripte

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Theoretische Chemie IIÜbungen am ComputerProf. Bernhard DickChristian NeißUni RegensburgWS 2003/20045. Übungsaufgabe: <strong>Praktische</strong> <strong>UNIX</strong>-<strong>Befehle</strong> <strong>und</strong><strong>Shell</strong>-<strong>Skripte</strong>A. Weitere praktische <strong>UNIX</strong>-<strong>Befehle</strong>• less Das Programm less kennen Sie schon aus Übung 1. Außerden bereits bekannten Kommandos zur Navigation innerhalb der Datei gibt esnoch einige weitere praktische <strong>Befehle</strong>:– / sucht in der Datei nach unten nach dem Ausdruck String.– ? sucht in der Datei nach oben nach dem Ausdruck String.– n wiederholt die letzte Suche, N wiederholt die letzte Suche in entgegengesetzterRichtung.– v öffnet die Datei im Editor. Voreingestellt ist dabei der vi, durch setzender Umgebungsvariable EDITOR können Sie auch einen anderen Editor definieren,z. B. nedit ist gut geeignet (kedit weniger). Für den Benutzergak23726 ist nedit bereits eingestellt.– F eignet sich zur Verfolgung der Gaussian-Ausgabe; Strg C beendet diesenModus wieder.• top gibt eine Liste aller Prozesse mit den jeweiligen Resourcen aus. q beendetdas Programm, mit u kann man sich die Prozesse eines bestimmten Benutzersanzeigen lassen, <strong>und</strong> mit k kann man Programme “killen” (dabei wird man nebender Programmnummer nach einer Signalnummer gefragt, den voreingestelltenWert 15 sollte man zunächst mit Enter bestätigen, zeigt sich das Programmwiderwillig, kann es nochmal mit Signal 9 versuchen).• df (“disk free”) gibt den freien Platz auf allen Partintionen bzw. über Netzeingeb<strong>und</strong>ene Verzeichnisse an. df -h ist etwas leichter zu lesen in der Ausgabe.df gibt den freien Plattenplatz auf der Partition an, auf der sich befindet.• du (“disk used”) zeigt den belegten Plattenplatz an. Optionen sind ähnlich zudf.• quota gibt Ihnen Ihre vom Rechenzentrum zugeteilten Plattenplatzkontingente<strong>und</strong> den davon bereits belegten Platz aus.• mountG.py Über diesen Befehl können Sie bequem auf Ihr NDS-Homeverzeichnis (G:-Laufwerk) vom Linux-Pool aus zugreifen. istein leeres Verzeichnis, z. B. ~/G, wo das NDS-Verzeichnis eingeblendet werden soll.Das abgefragte Passwort ist Ihr NDS-Passwort.• ncpumount blendet das NDS-Verzeichnis wieder aus.1


• find Beispiel: find /etc -name "*.rc" sucht nach Dateien mitder Endung .rc im Verzeichnis /etc. Man kann auch nach weiteren Eigenschaftender Dateien suchen, vgl. Manpage von find.• grep durchsucht Dateien nach bestimmem Inhalt,z. B. grep "SCF Done" *.log sucht in allen .log-Dateien im aktuellen Verzeichnisnach dem Ausdruck SCF Done.B. <strong>Shell</strong>-<strong>Skripte</strong>ProblemstellungEin einfaches Problem aus dem “Alltag” eines Quantenchemikers:• Eine Geometrieoptimierung des Amioniakmoleküls (Z-Matrix siehe Übungsblatt2: “Benutzung der Z-Matrix”) mit RHF/6-31G* hat nh = 1.0025 Å(Abstand N-H) <strong>und</strong> hnx = 111.6873 ◦ (Winkel H-N-X) geliefert. dd (Diederwinkel) wurde bei120 ◦ eingefroren.• Für weitere Berechnungen wird die zz-Komponente des Polarisierbarkeitstensors(Keyword POLAR) α zz für die Winkel hnx = 125., 115., 113., 111.6873, 110.,100. <strong>und</strong> 91. Grad benötigt ( dd <strong>und</strong> nh sollen unverändert bleiben).• Um die Konvergenz der Ergebnisse zu testen, sollen RHF-Rechnungen mit STO-3G, 6-31G** <strong>und</strong> 6-31+G(3df,2p) Basissätzen durchgeführt werden.Erstellen des InputfilesDa SCAN in Gaussian nur mit äquidistanten Schritten funktioniert <strong>und</strong> außerdem nurfür den ersten Punkt die Polarisierbarkeit ausrechnet, kann man darauf nicht zurückgreifen.Einige Möglichkeiten, diese Aufgabe mehr oder weniger geschickt zu lösen:• Man schreibt für jede Rechnung ein eigenes Inputfile (6*3 = 18 Inputfiles). Nachteil:Viel Arbeit <strong>und</strong> Input <strong>und</strong> Ouput sind auf 32 Files verteilt.• Man schreibt ein Inputfile, welches alle Rechnungen für einen Basissatz enthält.Falls hinter dem Input für eine Rechnung die Zeile--Link1--vorkommt, so startet Gaussian erneut <strong>und</strong> liest den Input für die nächste Rechnungein. Nachteil: Immer noch viel Arbeit.• Man schreibt ein Program, das die Inputfiles selbständig erzeugt. Dies kann imPrinzip in jeder Programmierprache geschehen. Im folgenden werden Bash-<strong>Shell</strong>-Scripts <strong>und</strong> Standard <strong>UNIX</strong>-<strong>Shell</strong> Programme benutzt, da diese für so gut wieallen Plattformen <strong>und</strong> Betriebssysteme verfügbar sind <strong>und</strong> normalerweise auf denRechnern, die man für G03 benutzt, installiert sind. Ein solches Script sieht z.B.wie folgt aus (/temp/gak23726/uV/inp gen):2


#!/bin/bashgrep -A2 "Variables:" $1 | grep hnx | awk ’{print $2;}’ > tmp1grep "Exact polarizability:" $1 | awk ’{print $8;}’ > tmp2paste tmp1 tmp2rm tmp1 tmp2Einige Anmerkungen• Die Pipe A|B lenkt den Standardoutput (Ausgabe) von Programm A in denStandardinput (Eingabe) von Programm B um.• A > fileB lenkt den Standardoutput von Programm A in die Datei fileB um. BeiA >> fileB wird der Standardoutput an fileB angehängt.• A < fileB lenkt den Standardinput von Programm A auf die Datei fileB um.• A

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!