Technische Praxis der Computersysteme 1
3. Grundlagen
Thomas Leitner <thomas.leitner@univie.ac.at>
Fakultät für Mathematik, Universität Wien Wintersemester 2012
Letzte Änderung: 2013-09-20 20:46:08 +0200
Inhalt
Benutzung X.org Benutzung Bash
Aufbau eines Befehls / Manpage Allgemeine Befehle
X.org 1
X.org ist ein Programm, das die graphische Oberfläche verwaltet. Es kommuniziert mit der Grafikkarte und stellt eine Brücke zu einem Fenstermanager („window-manager“, z.B. Enlightenment, Fluxbox, Compiz, Mutter, KWin …) über ein Protokoll her.
Der Festermanager verwaltet die Programmfenster (Rahmen, Platzierung, …) und bietet Möglichkeiten zum Minimieren, Maximieren, Wechseln,… von Programmfenstern. Der Inhalt der Programmfenster wird nicht vom Fenstermanager gestaltet, sondern dazu wird (fast immer) ein GUI-Toolkit (z.B. Qt, GTK, …) verwendet.
Die Desktop-Umgebung (z.B. Gnome, KDE, XFCE, …) ist wiederum unabhängig vom Fenstermanager und bietet ein einheitliches Look and Feel sowie zusätzliche Funktionalitäten wie ein „Startmenu“, einen Dateimanager, Standardprogramme (Movieplayer, Audioplayer, Bildbetrachter, …) und dergleichen.
X.org 2
Ein Display-Manager (z.B. XDM, KDM, GDM, LightDM, …) bietet die Möglichkeit zum graphischen Login und dem Anmelden an Rechnern im Netzwerk über XDMCP (X Display Manager Control Protocol).
X.org kann sogar über das Netzwerk/Internet Applikationsfenster auf anderen X-Instanzen darstellen.
freedesktop.org vereinheitlicht Fenstermanager und Desktop-Umgebungen durch Standards (z.B. Notifikationen,
„System Tray Icons“, …) und Software (
xdg-utils
,LightDM
, …).Tipps zur Bedienung, neben dem „Üblichen“:
Text mit Maus markieren → Text wird automatich in die Zwischenablage kopiert Mittlere Maustaste drücken → Text aus der Zwischenablage einfügen
Mittlere Maustaste auf Titelleiste → Fenster wird in den Hintergrund geschickt Alt-Taste + primäre Maustaste irgendwo im Fenster → Fenster verschieben Alt-Taste + sekundäre Maustaste irgendwo im Fenster → Fenstergröße ändern
bash - Grundlagen 1
Die bash (Bourne Again Shell) ist die Standard-Shell auf Linux-Systemen und die, mit der wir uns befassen. Zur Wiederholung: Eine Shell dient dem Ausführen von Befehlen und der effizienten Manipulation von Textströmen.
Für die Eingabezeile wird die
readline
Bibliothek genutzt, daher gibt es einige Hilfsmittel für den Anwender:Befehls-History: Pfeiltaste rauf & runter
History-Search:
Strg-r
sucht rückwärts in der History Navigation in der Zeile:Strg-Links
/Alt-b
→ Cursor ein Wort nach linksStrg-Rechts
/Alt-f
→ Cursor ein Wort nach rechtsStrg-a
/Strg-e
→ Cursor zum Anfang/Ende der ZeileDie Tabulator-Taste vervollständigt (angefangene) Befehle, Pfade und Dateinamen. Zusammen mit dem Paket
bash-completion
werden auch Argumente und Optionen vervollständigt.bash - Grundlagen 2
Text-Terminal
TastaturBildschirm
Programm
#0 stdin
#1 stdout
#2 stderr Grundsätzlich lassen sich vier Typen von Befehlen aufrufen:
Shell-interne Befehle, diese entsprechen keinem Programm Alias, das ist ein Synonym für einen Befehl (nur in der Shell gültig) (Systemweite) Programme
Shell-Skripte (systemweit oder selbst programmiert)
Welcher Befehl gewählt wird, hängt vom Pfad (der in der Variable
$PATH
) ab und lässt sich mittelstype
(oder demProgramm
which
) bestimmen.Jeder Befehl hat einen Namen, eine bestimmte Syntax für
Optionen/Parameter und benutzt meist Daten-Ströme (Standardeingabe stdin, Standardausgabe stdout und Standardfehlerausgabe stderr).
Anatomie eines Befehls
$ name [OPTIONEN] [ARGUMENTE]...
Beispiel:
$ ls -l -h --color=none change* copy*
total 10.1K
-rw-r--r-- 1 root root 1.8K Aug 11 2011 changelog.Debian.gz -rw-r--r-- 1 root root 8.3K Aug 11 2011 copyright
Jeder Befehl hat einen Rückgabewert („exit value“ oder „exit status“; eine Zahl), welcher signalisiert, ob es einen Fehler gab (0 → fehlerfreie Ausführung, sonst nicht fehlerfreie Ausführung). Er steht in der Shell-Variablen
$?
.Beispiel:
$ rm not_existing_file
rm: cannot remove `not_existing_file': No such file or directory
$ echo $? # Datei erfolgreich gelöscht?
1
$ echo $? # Ausführung von echo-Befehl okay?
0
Anatomie eines Befehls - Manpage
Manpages (Befehl
man
) erklären, was ein Befehl macht und wie er aufgerufen werden kann bzw. welche Optionen/Parameter er unterstützt.Unterstrichene Ausdrücke bedeuten meist, dass diese durch konkrete Werte ersetzt werden müssen. „|“ gibt Alternativen an, „[…]“ optionale Argumente (Defaults beachten!), „…“ bedeutet, dass dieses Argument öfters vorkommen darf.
Beendet wird das Programm mit
q
, mit/<WORT>
undn/N
kann man suchen.Beispiele für die Synopsis eines Befehls:
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
ls [OPTION]... [FILE]...
Mehrere alternative Aufrufmöglichkeiten stehen untereinander:
mount [-lhV]
mount -a [-fFnrsvw] [-t vfstype] [-O optlist]
mount [-fnrsvw] [-o option[,option]...] device | dir mount [-fnrsvw] [-t vfstype] [-o options] device dir
Ausführen eines Befehls
Was passiert, wenn ein Befehl ausgeführt wird?
Bash kopiert sich („fork“) - Kopie des bash-Prozesses ist Kind-Prozess.
Der kopierte Unterprozess ersetzt sich selbst mit dem auszuführenden Programm („exec“). Es werden dabei alle Umgebungsvariablen des Eltern-Prozesses übernommen.
Wichtig: Ein Kindprozess kann nichts am Elternprozess ändern, es gibt nur den Rückgabewert und Signale.
Siehe auch Bash and the process tree
Wichtige bash-Befehle
type
→ Typ des Befehls (intern, Programm, …)echo [Argumente...]
→ Schreibt Argumente nach stdoutcd
→ Wechseln des Arbeitsverzeichnissespwd
→ Ausgabe des aktuellen Arbeitsverzeichnisses nach stdoutexit
→ Beenden der Shell Tastenkombinationen und wichtig „Kürzel“:Strg-c
→ Unterbrechen/Beenden eines aktiven Befehls (Signal INT)Strg-d
→ Beenden der Shell (nur, wenn noch keine Zeichen eingetippt wurden)~
steht für das eigene Home-Verzeichnis.
steht für das aktuelle Verzeichnis..
steht für das Elternverzeichnis des aktuellen VerzeichnissesVariablen können mittels
name=inhalt
(kein Leerzeichen!) zugewiesen und der Inhalt mit$name
(z.B.echo
$name
) wieder ausgelesen werden.Allgemeine Befehle - Benutzer (whoami, id)
Jeder muss sich am System authentifizieren, bevor er Programme ausführen kann. Alle von einem Benutzer gestarteten Prozesse laufen (fast immer) mit seinen Rechten und unter seinem Namen.
Allgemeine Befehle - Benutzer (w, who, last)
Allgemeine Befehle - Pager (less, more)
less
undmore
sind zwei sogenannte Pager, Programme, die es ermöglichen, (Text-)Dateien oder die Ausgabe von anderen Programmen seitenweise darzustellen. Dabei istless
vorzuziehen, da es deutlich mehr kann alsmore
(„lesswhoami - Gibt aus, wer man laut System ist
$ whoami thomas
id - Zeigt Benutzer- und Gruppeninformationen an.
Zeigt mehr Informationen als
whoami
an, zum Beispiel auch die Gruppen, in denen der Benutzer Mitglied ist.Verwendet den aktuellen Benutzer oder den via Parameter angegebenen.
$ id
uid=1515(thomas) gid=1515(thomas) groups=1515(thomas),4(adm),20(dialout),24(cdrom), 46(plugdev),116(lpadmin),118(admin),124(sambashare),129(vboxusers)
$ id root
uid=0(root) gid=0(root) groups=0(root)
»
»
»
»
w - Listet auf, wer eingeloggt ist und was derjenige macht
w <login name>
schränkt die Ausgabe auf einen bestimmten Benutzer ein.$ w
13:56:13 up 4 days, 2:19, 3 users, load average: 0.03, 0.06, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT leitner pts/1 2001:62a:4:2f00: 13:56 0.00s 0.34s 0.00s w
sascha pts/2 2001:62a:4:2f00: 08:05 5:49m 0.52s 0.47s ssh name@baka sascha pts/4 2001:62a:4:2f00: 11:00 2:46m 0.08s 0.08s -zsh
who - Zeigt nur an, wer gerade eingeloggt ist
$ who
leitner pts/1 2012-10-09 14:01 (2001:62a:4:2f00:8ce:4ac0:c4ee:ecb2) sascha pts/2 2012-10-09 08:05 (localhost)
sascha pts/4 2012-10-09 11:00 (2001:62a:4:2f00:6ef0:49ff:fe25:fa5b) last - Zeigt die Benutzer an, die zuletzt eingeloggt waren
$ last
david pts/1 2001:62a:4:2f00: Wed Oct 10 10:37 - 10:50 (00:12) leitner pts/1 2001:62a:4:2f00: Tue Oct 9 14:01 - 14:02 (00:01) sascha pts/3 eduroam-239-013. Mon Oct 8 12:22 - 12:50 (00:28) wtmp begins Mon Oct 1 08:37:10 2012
»
»
»
»
anderen Programmen seitenweise darzustellen. Dabei ist
less
vorzuziehen, da es deutlich mehr kann alsmore
(„is more than more“).
Wichtigste Tastenkombination für
less
:Bild rauf/runter
oderStrg-b/Strg-f
→ eine Bildschirmseite nach oben/unten scrollenPfeil rauf/runter
oderk/j
→ eine Zeile nach oben/unten scrollen/MUSTER
→ nach dem Muster suchen, danach mitn/N
zur nächsten/vorigen Fundstelle springenq
→ Programm beendenAllgemeine Befehle - Sonstige (uptime, date)
Allgemeine Befehle - Sonstige (script)
Copyright und Lizenz
Copyright: Thomas Leitner thomas.leitner@univie.ac.at
Basiert teilweise auf den Folien von Harald Schilly harald.schilly@univie.ac.at Lizenz: Creative Commons CC BY-NC-SA
„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/
uptime - Zeigt an, wie lange das System läuft und wie sehr es ausgelastet ist.
Diese Auslastung wird über die letzten 1, 5 und 15 Minuten berechet und gibt an, wieviele Prozesse durchschnittlich aktiv gelaufen sind. Als Faustregel gilt, dass die Auslastung kleiner gleich der Anzahl an ausführenden CPU Threads sein sollte.
$ uptime
11:22:35 up 66 days, 23:01, 125 users, load average: 2.03, 2.00, 1.94 date - Gibt das Datum in einem konfigurierbaren Format aus
Mit der Option
-d
kann man ein beliebiges Datum, nicht nur das aktuelle, formatieren.Wichtige Formatsequenzen sind
%H
(Stunde 00..23),%M
(Minute 00..59), ‚%S‘ (Sekunde 00..59),%d
(Tag 01..31),%m
(Monat 01..12) und%Y
(Jahr)$ date
Tue Oct 9 17:41:43 CEST 2012
$ date +"%Y-%m-%d foo %H:%M:%S"
2012-10-09 foo 17:42:03
$ date -d "2010-07-02 15:30:12" +"%Y-%m-%d foo %H:%M:%S"
2010-07-02 foo 15:30:12
»
»
»
»
»
script - Aufzeichnen aller Ein- und Ausgaben in einer Datei
Das ist vor allem für die Übungen sehr nützlich (wie auch in der Manpage angemerkt).
$ script hardcopy
Script started, file is hardcopy
$ whoami thomas
$ exit exit
Script done, file is hardcopy
$ cat hardcopy
Script started on Tue 09 Oct 2012 06:08:07 PM CEST
$ whoami thomas
$ exit exit
Script done on Tue 09 Oct 2012 06:08:42 PM CEST
»
»