• Keine Ergebnisse gefunden

Technische Praxis der Computersysteme 1

N/A
N/A
Protected

Academic year: 2021

Aktie "Technische Praxis der Computersysteme 1"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

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 links

Strg-Rechts

/

Alt-f

→ Cursor ein Wort nach rechts

Strg-a

/

Strg-e

→ Cursor zum Anfang/Ende der Zeile

Die 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

(2)

Text-Terminal

Tastatur

Bildschirm

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 mittels

type

(oder dem

Programm

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>

und

n/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

(3)

Wichtige bash-Befehle

type

→ Typ des Befehls (intern, Programm, …)

echo [Argumente...]

→ Schreibt Argumente nach stdout

cd

→ Wechseln des Arbeitsverzeichnisses

pwd

→ Ausgabe des aktuellen Arbeitsverzeichnisses nach stdout

exit

→ 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 Verzeichnisses

Variablen 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

und

more

sind zwei sogenannte Pager, Programme, die es ermöglichen, (Text-)Dateien oder die Ausgabe von anderen Programmen seitenweise darzustellen. Dabei ist

less

vorzuziehen, da es deutlich mehr kann als

more

(„less

whoami - 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

»

»

»

»

(4)

anderen Programmen seitenweise darzustellen. Dabei ist

less

vorzuziehen, da es deutlich mehr kann als

more

(„

is more than more“).

Wichtigste Tastenkombination für

less

:

Bild rauf/runter

oder

Strg-b/Strg-f

→ eine Bildschirmseite nach oben/unten scrollen

Pfeil rauf/runter

oder

k/j

→ eine Zeile nach oben/unten scrollen

/MUSTER

→ nach dem Muster suchen, danach mit

n/N

zur nächsten/vorigen Fundstelle springen

q

→ Programm beenden

Allgemeine 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

»

»

Referenzen

ÄHNLICHE DOKUMENTE

Aber da es unter DOS keine M¨oglichkeit gibt, zwei Kommandos parallel laufen zu lassen, wird das erste Kommando vollst¨andig ausgef¨uhrt, seine Ausgabe in eine tempor¨are

In this study, we followed a comparative approach with PST and/or LC producing strains of Alexandrium spp., to evaluate the time dependent e ff ects of exposure in blue mussels,

In this study, we followed a comparative approach with PST and/or LC producing strains of Alexandrium spp., to evaluate the time dependent e ff ects of exposure in blue mussels,

The genomes of several bivalve species contain multiple MIF-like genes, with Mytilidae showing, in particular, a remarkable radiation of the sequences pertaining to the D-

Hier wird getestet, ob der Name, der in der Variable DATEI gespeichert ist, im aktuellen Verzeichnis vorhanden ist, ob er ein File ist und ob es nicht leer ist.. Name im

Hier wird getestet, ob der Name, der in der Variable DATEI gespeichert ist, im aktuellen Verzeichnis vorhanden ist, ob er ein File ist und ob es nicht leer ist. Hier wird getestet,

Lassen Sie sich den Wert von PATH ausgeben und vergleichen Sie diesen mit der Ausgabe des Befehls which shell (wobei shell für bash oder tcsh steht), den Sie bereits in Aufgabe

real time time elapsed on the clock system time processor time in system calls. user time processor time in other portions