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

Documents pareils