Vortragsfolien zu Unix
Transcription
Vortragsfolien zu Unix
Lehrbücher (pdf/ps) UNIX als Entwicklungsumgebung Autor Institution W. Alex u. a. Uni Karlsruhe 405 Seiten Jahr 2000 Kommentar F. Fiamingo u.a. Ohio State Univ. 132 1998 Referenz W. Hanrath RWTH Aachen 348 2002 tiefgehend S. Hetze LunetIX 421 1994 3. Aufl. www.rz.rwth-aachen.de/hpc/compiler/unix.html Unix Seite 1 Rec hen - un d Ko mm uni k at io n szentr um Unix Seite 4 Inhalt Rec hen - un d Ko mm uni k at io n szentr um Lehrbücher (html) Literatur Autor Institution Seiten (gesch.) Jahr Shells T. Ermer, M. Meyer Saxonia Systems 1100 2001 XWindow S. Hetze LunetIX 600 1997 Entwicklungsumgebungen J. Plate FH München 200 2001 Kommentar 7. Aufl. www.rz.rwth-aachen.de/hpc/compiler/unix.html Seite 2 Unix Rec hen - un d Ko mm uni k at io n szentr um man-Pages Autor Titel Verlag F. Gehrke u. a. Das Einsteiger- vmiseminar Unix Buch Christine Keine Angst Wolfinvor Unix ger Referenz Sehr umfangreich Nicht leicht zu lesen Unix Rec hen - un d Ko mm uni k at io n szentr um Lehrbücher für Anfänger man Befehl Seite 3 Unix Seite 5 Rec hen - un d Ko mm uni k at io n szentr um Seite 6 Unix SpringerVerlag Seiten Preis 468 € 10,12 425 € 29,95 Rec hen - un d Ko mm uni k at io n szentr um 1 Standardwerke / Referenzen Autor Shells: Korn-Shell Titel Verlag Seiten Preis Unix. Eine Einführung in die Benutzung RRZN 180 € 4,14 J. Gulbins/ K. Obermayr UNIX system V.4 Springer 839 € 49,95 H. Herold Unix Linux Kurzreferenz AddisonWesley 336 € 19,95 Unix Seite 7 Rec hen - un d Ko mm uni k at io n szentr um Die Interaktion mit dem Benutzer erfolgt über eine Shell. Shells sind darüber hinaus aber auch Programmiersprachen (Shell-Skript). UNIX ist nicht auf eine bestimmte Shell festgelegt. An der RWTH: Korn-Shell (ksh) Bestandteil des Standard-Unix (sehr bekannt) Sehr komfortabel Aber: Die Cursortasten, Backspace und Delete haben aber keine Funktion. Stattdessen müssen Escape-Sequenzen eingegeben werden. Seite 10 Inhalt Unix Rec hen - un d Ko mm uni k at io n szentr um Shells: Bourne-Again-Shell Zum gelegentlichen Arbeiten an der RWTH ist die Bourne-Again-Shell (bash) nützlich, die häufig in LinuxSystemen verwendet wird. Literatur Shells Die Cursor-Tasten und Backspace funktionieren. Mit Cursor hoch/runter kann man durch die Liste der letzten Befehle gehen. Mit Tab kann man angefangene Befehle/Dateinamen automatisch vervollständigen lassen (falls eindeutig). XWindow Entwicklungsumgebungen Die bash wird mit dem Kommando bash aufgerufen. Nach exit ist man wieder in der Korn-Shell. Seite 8 Unix Rec hen - un d Ko mm uni k at io n szentr um Seite 11 Shells (1) UNIX wird im Wesentlichen von der Kommandozeile aus gesteuert. Problem: Zunächst funktionieren weder die Cursor-Tasten, noch Delete oder Backspace. Unix Rec hen - un d Ko mm uni k at io n szentr um Trick: Markieren mit Maustaste Benutzer X-Windows Trick: Funktioniert mit allen Shells, aber nur mit graphischen Oberflächen (X-Terminal) : Shell Programme Einen Text mit gedrückter linker Maustaste markieren. Durch Drücken der mittleren Maustaste (falls nicht vorhanden, beide Maustasten gleichzeitig nehmen) wird der Text an die aktuellen Einfügeposition geschrieben. Seite 9 Unix Rec hen - un d Ko mm uni k at io n szentr um Seite 12 Unix Rec hen - un d Ko mm uni k at io n szentr um 2 Shells: Weitere Informationen Die Shells haben noch jede Menge Bedienungskomfort. Prozesse im Hintergrund Trick: Prozesse können im Hintergrund gestartet werden, so dass die Eingabezeile sofort weiter benutzt werden kann. Die Korn-Shell wird in den meisten Unix-Büchern beschrieben. Besonders ausführlich: Gulbins/Obermayr: UNIX System V.4, Springer Verlag Dazu wird an den Befehl ein „&“ gehängt. Die bash-Shell wird hauptsächlich in Linux-Büchern beschrieben. z.B. Hetze u. a.: Anwender Linux Handbuch, LunetIX Beispiel: Dies wird man vor allem bei graphischen Anwendungen (X-Clients) tun, die ihre eigene Ein-/Ausgabe haben. netscape & startet Netscape und kehrt sofort zur Eingabezeile zurück. Unix Seite 13 Rec hen - un d Ko mm uni k at io n szentr um Unix Seite 16 Prozesse Threads Alle Programme und die meisten UNIX-Kommandos erzeugen einen eigenen Prozess. Vaterprozess Start Vaterprozess Seite 14 Returnwert fork() Sohnprozess exec() Unix Jeder Prozess kann mehrere Threads haben. Threads sind ebenfalls eigenständige Programme, aber: Threads (pthreads) werden durch die Bibliotheksfunktion pthread_create erzeugt. exit() Rec hen - un d Ko mm uni k at io n szentr um Unix Seite 17 Prozesse - Beispiel LINUX:linuxc26:[23]$ ps PID TTY TIME 25648 pts/4 00:00:00 25650 pts/4 00:00:00 12472 pts/4 00:00:00 Rec hen - un d Ko mm uni k at io n szentr um Rec hen - un d Ko mm uni k at io n szentr um Daten von Prozessen CMD yaksh ksh ps Sohnprozess Vaterprozess Datensegment 1 Shared Memory möglich Datensegment 2 (Funktioniert nicht unter Solaris) Seite 15 Unix Rec hen - un d Ko mm uni k at io n szentr um Seite 18 Unix Rec hen - un d Ko mm uni k at io n szentr um 3 Daten von Threads Shell-Variablen(3) Vaterprozess Datensegment 1 Thread 1 Lösung: Thread 2 Kommandos, die mit Punkt + Leerzeichen anfangen, werden nicht als eigener Prozess, sondern im Prozess der Shell ausgeführt (Punkt-Kommando). Thread 3 Damit bleiben die Variablen erhalten. Forte61.init Thread-lokale Daten Unix Seite 19 falsch: Variablen bleiben nicht erhalten . Forte61.init richtig: Variablen bleiben erhalten Rec hen - un d Ko mm uni k at io n szentr um Unix Seite 22 Rec hen - un d Ko mm uni k at io n szentr um Shell-Variablen(4) Shell-Variablen(1) Kein Zugriff auf Variablen 2. Problem: Shell-Variablen werden mit <name>= <value> definiert. Vaterprozess Anlegen von Variablen Startet Sohnprozess Sohnprozess Sie gelten nur innerhalb des jeweiligen Prozesses. Dies verursacht einige Probleme, die durch Sonderfälle berücksichtigt werden müssen. Lösung: Es gibt spezielle Variablen, die sogenannten Umgebungsvariablen, die auch von den Sohnprozessen übernommen werden. Diese werden mit export <name>=<wert> definiert. Unix Seite 20 Rec hen - un d Ko mm uni k at io n szentr um Unix Seite 23 Shell-Variablen(2) Inhalt 1. Problem: In einem Skript sollen verschiedene Umgebungsvaribalen (Pfadnamen und anderes) gesetzt werden. Starten des Skripts (eigener Prozess) Rec hen - un d Ko mm uni k at io n szentr um Literatur Shells Variablen werden gesetzt XWindow Frust beim Anwender Seite 21 Ende des Skripts Variablen werden vergessen Unix Entwicklungsumgebungen Rec hen - un d Ko mm uni k at io n szentr um Seite 24 Unix Rec hen - un d Ko mm uni k at io n szentr um 4 Inhalt XWindow Literatur Graphische Anwendungen Geräteunabhängig Shells Über Netzwerke verteilt XWindow Entwicklungsumgebungen Unix Seite 25 Rec hen - un d Ko mm uni k at io n szentr um Seite 28 X-Server – X-Client X-Server Seite 26 X-Client Forte KDevelop Standardisierte geräteunabhängig Netzwerkverbindung (X-Protokoll) Braucht zur Ausführung einen X-Server Unix Rec hen - un d Ko mm uni k at io n szentr um Integrierte Entwicklungsumgebungen sind unter UNIX nicht weit verbreitet Seite 29 X-Window-Manager Rec hen - un d Ko mm uni k at io n szentr um Editor Compiler/Linker Projektverwaltung Make-Tool Starten der Programme (Versionsverwaltung) Debugger Tools Drucken von Source-Code Zeichenfolgen suchen KDE CDE Unix Unix Entwicklungsumgebungen(2) Der erste X-Client, der in einem X-Window-System aufgerufen wird, ist der X-Window-Manager, der das Aussehen bestimmt. Seite 27 Rec hen - un d Ko mm uni k at io n szentr um Entwicklungsumgebungen Anwendungen mit graphischer Ein-/Ausgabe. Zeigt die Grafikdaten auf dem Bildschirm an, liest Tastatur und Maus ein. geräteabhängig Unix Rec hen - un d Ko mm uni k at io n szentr um Seite 30 Unix Rec hen - un d Ko mm uni k at io n szentr um 5 Editoren ohne X-Window Editoren mit X-Window(2) Andere Editoren: vi: Standard-Editor (ab UNIX V), bildschirmorientiert, Bedienung über Escape-Sequenzen. gvim (nur Sun-Cluster) xedit kedit (nur Linux) Pico: Einfacher, leicht zu bedienender Editor. Nicht verfügbar auf dem SunCluster Seite 31 Unix Rec hen - un d Ko mm uni k at io n szentr um Editoren ohne X-Window(2) emacs: Sehr mächtiger Editor, verlangt etwas Einarbeitungszeit. Neuere Emacs-Versionen arbeiten als X-Client, lassen sich aber auch mit –nw in einem zeichenorientierten Terminal starten. Unix Seite 34 Rec hen - un d Ko mm uni k at io n szentr um Compilieren und Linken Einfachste Beschreibung: Übersetzen eines Beispielprogramms in eine ausführbare Datei a.out C: C++: Fortran-90: Fortran-77: cc beispiel.c CC beispiel.cpp f90 besipiel.f90 f77 besipiel.f In Wirklichkeit ist alles komplizierter. Seite 32 Unix Rec hen - un d Ko mm uni k at io n szentr um Editoren mit X-Window Unix Rec hen - un d Ko mm uni k at io n szentr um Compiler an der RWTH nedit: Empfehlenswert für alle Benutzer mit X-Window, die wenig Erfahrung mit Unix haben, da mit Menüführung einfach zu bedienen (und ähnlich wie Windows-Editoren) mit ausreichender Funktionalität. Seite 33 Unix Seite 35 Rec hen - un d Ko mm uni k at io n szentr um Aufruf Sun-Cluster Linux-Cluster cc Sun C-Compiler Gnu C/C++-Compiler 3.01 CC Sun C++-Compiler - f90 Sun f95-Compiler VAST/f90-Compiler (nutzt f77) f77 Sun f77-Compiler Gnu Fortran77-Compiler Seite 36 Unix Rec hen - un d Ko mm uni k at io n szentr um 6 Compiler an der RWTH (2) Sun-Cluster Problemstellung: Linux-Cluster gcc, g++, c++: Gnu-C/C++Compiler 2.95 g77: Gnu F77-Compiler gcc, c++, g++: Gnu C/C++Compiler 2.96 g77: Gnu-F77-Compiler KCC: KAI C++-Compiler pgCC, pgcc, pgf90, pgf77: Portland Group-Compiler Unix Seite 37 make Rec hen - un d Ko mm uni k at io n szentr um Es gibt auch ein Programm zur automatischen Generierung von Makefiles (makemake) Seite 40 Gebräuchlichste Optionen -c: Nur compilieren, nicht linken -o Name: Ausführbare Datei heißt nicht a.out sondern Name. -g: Erzeugt zusätzliche Informationen für Debugger (zum Debuggen unbeding notwendig) -O: Optimierungsstufe des Compilers, oft auch –fast für höchste Optimierungsstufe -l: Linkt Bibliotheksdatei C H H C H C H C H C H C H C H C H C H C H C H C H C H C H C H Unix Rec hen - un d Ko mm uni k at io n szentr um Versionsverwaltung Verwaltung aller Entwicklungsstadien eines Programms in einer Datenbank Nur Änderungen zwischen den Versionen werden gespeichert Îplatzsparend RCS CVS Einfache Versionsverwaltung Versionsverwaltung für komplexe Projekte Unix Rec hen - un d Ko mm uni k at io n szentr um http://www.rz.rwth-aachen.de/hpc/compiler/utilities.html Seite 41 Statische und dynamische Bibliotheken Statische Bibliotheken haben die Endung .a, dynamische die Endung .so. Dynamische Bibliotheken verhalten sich wie eine dll in Windows. Ausführen Linken Compilieren H C Eigener Vortrag: Versionsverwaltung mit RCS cc –o Beispiel.exe –g –fast –lm Beispiel.c Seite 38 C Ausführbare Datei Object-Files Unix Rec hen - un d Ko mm uni k at io n szentr um Debugger Separate Debugger, vor allem Totalview, außerdem Prism und dbx Totalview und Prism können auch parallele Programme debuggen. In Entwicklungsumgebungen enthaltene Debugger, wie in der Sun Forte oder in der KDevelop (Linux)-Umgebung Separate Vorträge über Totalview und Forte Source-Files Seite 39 dynamische Bibliotheken http://www.rz.rwth-aachen.de/hpc/compiler/debugger.html statische Bibliotheken Unix Rec hen - un d Ko mm uni k at io n szentr um Seite 42 Unix Rec hen - un d Ko mm uni k at io n szentr um 7 Tools Tools(4): Drucken diff: diff prog1 prog2 gibt die Unterschiede zwischen den beiden Dateien prog1 und prog2 aus. find: find . –name prog1 –print zeigt alle Dateien prog1 an, die im aktuellen Verzeichnis oder einem Unterverzeichnis vorkommen. lp –dDruckername Dateiname -d kann weggelassen werden, falls die Variable $LPDEST gesetzt ist. lpr entspricht in der Funktionalität lp Die Namen der Drucker kann man mit lpstat -p herauskriegen. grep: grep Hallo * durchsucht alle Dateien im aktuellen Verzeichnis nach dem Wort Hallo. Unix Seite 43 Rec hen - un d Ko mm uni k at io n szentr um Seite 46 Tools (2) Unix Rec hen - un d Ko mm uni k at io n szentr um Absturz Viele Kommandos sind sehr mächtig, mit vielen Optionen. Es ist möglich (und sehr hilfreich), Kommandos miteinander zu kombinieren (z.B. find und grep). Am besten sieht man sich in möglichst vielen Büchern die Beispiele dazu an und probiert sie aus. In Situationen, wo man in Windows Ctrl-Alt-Delete drückt und Tasks abschießt, geht man in UNIX so vor: Läuft der Prozess im Vordergrund, hilft meistens Ctrl-C. Ansonsten: Ermitteln der laufenden Prozesse: ps –u Benutzernummer Abschießen des Prozesses: kill –9 Prozessnummer Unix Seite 44 Rec hen - un d Ko mm uni k at io n szentr um Seite 47 Unix Rec hen - un d Ko mm uni k at io n szentr um Tools(3): Komprimieren Packen Entpacken ar -r ar -x tar -cf tar -xf .tar pack unpack .z 90 % Unix-Standard compress uncompress .Z 80 % Unix-Standard gzip gunzip .gz 57 % Weit verbreitet, Gnu bzip2 bunzip2 .bz2 54 % wenig bekannt zip -r unzip .zip 57 % Kompatibel zu MS-Zip Seite 45 .a Unix Rec hen - un d Ko mm uni k at io n szentr um 8