Technische Praxis der Computersysteme 1
9. Sonstiges
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
Start des Betriebssystems Wichtige Shell-Variablen Wichtige Geräte
Nützliche Befehle
Start des Betriebssystems
Das BIOS (Basic Input Output System) bzw. das UEFI (Unified Extensible Firmware Interface) – gespeichert auf einem Chip direkt am Motherboard – initialiert die Hardware und läd den Boot-Loader einer Festplatte, eines USB Gerätes, einer CD, …
Der Boot-Loader (unter Linux meist grub2) übergibt die Kontrolle an ein Betriebssystem, in unserem Fall dem Linux-Kernel. Der Boot-Loader grub2 bietet die Möglichkeit, verschiedene Betriebssystem zu laden (Linux, Windows, *BSD).
Der Linux-Kernel bereit die Hardware vor und übergibt dann an den init-Prozess. Es gibt mehrere verschiedene init-Programme, früher SysV-Init mit den Init-Skripten. Um den Start zu optimieren, verwenden moderne Distributionen andere init-Programme (Ubuntu z.B. Upstart, Fedora z.B.
systemd).
Der init-Prozess lädt nun alle Dienste (Dämonen - Disk and Execution Monitors), die im Hintergrund laufen sollen, und schließlich die Login-Programme (entweder nur die Konsolen-Login-Programme oder auch die graphische Oberfläche).
Wichtige Shell-Variablen 1
Wichtige Shell-Variablen 2
USER
Name des aktuellen Benutzers.
PWD
Das aktuelle Arbeitsverzeichnis.
PATH
Der Suchpfad für Programme (eine Liste von absolute Verzeichnispfaden, getrennt durch Doppelpunkte).
CDPATH
Der Suchpfad für den
cd
-Befehl (nützlich, wenn man oft in bestimmte Unterverzeichnisse eines Verzeichnisses wechselt).HOME
Das Benutzerverzeichnis des aktuellen Benutzers.
»
»
»
»
»
PS1, PS2
Definition des primären und sekundären Prompts der Bash.
»
Wichtige Geräte
Standardeingabe in Befehlsargumente umwandeln - xargs
Befehle als anderer Benutzer ausführen - sudo, su
IFS
Feldseparator der Bash (Internal Field Separator, wird zum Teilen von Wörtern verwendet, Standardwert ist
<Leerzeichen><Tabulator><Zeilenvorschub>
)EDITOR
Angabe des Standard-Texteditors (wird von vielen Programmen genutzt).
LANG
Gibt die Sprache, Lokalisierung und die Zeichenkodierung an (z.B.
en_US.UTF-8
oderde_AT.UTF-8
)TERM
Die Art des Terminals, in der die Shell läuft (z.B.
screen
oderxterm
; Ausgabe der Informationen zum aktuellen Terminal mittelsinfocmp
).»
»
»
»
/dev/null
Beim lesenden Zugriff wird immer ein EOF (End of file) zurückgegeben, alle geschriebenen Daten werden weggeworfen (
man 4 null
)./dev/zero
Beim lesenden Zugriff wird immer das Byte 0 zurückgegeben, alle geschriebenen Daten werden weggeworfen (
man 4 zero
)./dev/full
Beim lesenden Zugriff wird immer das Byte 0 zurückgegeben, beim Schreiben tritt immer ein ENOSPC-Fehler auf (zum Testen von Programmen;
man zero
)./dev/random, /dev/urandom
Beim lesenden Zugriff wird ein zufälliges Byte zurückgegeben. Falls der Entropie-Pool leer ist,
blockiert das Gerät
/dev/random
, aber nicht/dev/urandom
(das könnte eventuell Angriffe auf die generierten Zufallszahlen erlauben).»
»
»
»
xargs - Wandelt die Standardeingabe in Argumente für einen Befehl um.
Teilt die Standardeingabe in Wörter (Trennzeichen sind Leerzeichen und Zeilenumbruch) und übergibt diese Wörter einem Befehl als Argumente.
Sehr nützlich z.B. in Verbindung mit
find
.Optionen:
-I Ersetzungszeichenkette
→ die angegebene Zeichenkette wird durch ein Argument ersetzt (und das Trennzeichen ist nur mehr der Zeilenumbruch),-n Zahl
→ Anzahl der Argument pro Befehlausführung,-0
→ Trennzeichen ist das Null-Byte.$ echo -e "a b c\nd e f" | xargs -n 2 echo a b
c d e f
$ echo -e "a b c\nd e f" | xargs -I{} echo Das ist jetzt: {}
Das ist jetzt: a b c Das ist jetzt: d e f
$ find /tmp -name core -type f -print0 | xargs -0 /bin/rm -i
»
»
»
»
»
su - Benutzer wechseln oder Superuser (root) werden.
Syntax:
su [Optionen] [Benutzername]
(ohne Benutzername wird man root).Man muss das Passwort des Benutzers wissen, auf den man wechseln will!
Optionen:
-/-l
→ Login-Shell des Benutzers verwenden.$ su - Passwort:
»
»
»
»
Befehle als anderer Benutzer ausführen - sudo, su
Unter Gnome gibt es für beide Befehle die grafische Oberfläche
gksu
.Manche versuchen es auch im realen Leben (meist mit wenig Erfolg):
XKCD Comic 149
Mit einem Server arbeiten - ssh, scp
root@noweto:~#
sudo - Befehle mit den Rechten eines anderen Benutzers ausführen.
Syntax:
sudo [Optionen] [Befehl]
.Standardmäßig werden die Befehle als root ausgeführt.
Konfigurationsdatei ist
/etc/sudoers
(editieren mitvisudo
).Man muss sein eigenes Passwort eingeben (nicht das des anderen Benutzers) und über die Konfigurationsdatei die Rechte zum Ausführen des Befehls haben.
Optionen:
-u Benutzername|UID
→ Befehl als dieser Benutzer ausführen,-i
→ Login-Shell ausführen.
$ sudo -i
[sudo] password for thomas:
root@noweto:~#
»
»
»
»
»
»
ssh - Erlaubt das sichere Einloggen auf einem Server.
Voraussetzung: SSH-Dämon und Benutzeraccount am Server.
Der Server ist mittels eines Schlüssels eindeutig identifiziert (damit man sicher gehen kann, dass man sich auf den richtigen Server einloggt) und der Datentransfer ist verschlüsselt.
Einloggen kann man sich via Passwort oder auch einem kryptographischen, asymmetrischen Schlüssel (Public Key Authentication).
Man kann mit dem Programm auch TCP-Ports weiterleiten oder VPNs erstellen.
$ ssh leitner@login.mat.univie.ac.at leitner@login:~$
$ ssh -o PubkeyAuthentication=false leitner@login.mat.univie.ac.at leitner@login.mat.univie.ac.at's password:
leitner@login:~$
scp - Kopiert Dateien sicher von/auf einem Server.
Syntax:
scp [Optionen] [[User@]Server1]:Pfad1 [[User@]Server2]:Pfad2
Basiert auf ssh, d.h. der Datentransfer ist verschlüsselt, Host wird authentifziert…
$ scp notizen.org leitner@login.mat.univie.ac.at:~/
notizen.org
»
»
»
»
»
»
»
»
Dateien komprimieren - gzip, bzip2, tar
Roh-Kopien erstellen - dd
Sonstige Programme
Sonstige Programme
gzip, bzip2 - Komprimieren Dateien.
Übliche Dateierweiterung für gzip-Dateien ist
gz
, für bzip2-Dateienbz2
.Können keine Archive erstellen, d.h. diese Befehle können nur für einzelne Dateien sinnvoll verwendet werden.
$ touch file; gzip file; ls -l file*
-rw-rw-r-- 1 thomas thomas 25 Dec 5 20:30 file.gz tar - Verarbeitet (packt, entpackt, listet, …) TAR-Archive.
Syntax:
tar Optionen [Datei...]
.Übliche Dateierweiterung ist
tar
bzw.tar.gz
/tar.bz2
für komprimierte Archive.Dateien werden in ein Archiv gepackt, das Archiv wird anschließend mittels eines Komprimierprogramms wie gzip oder bzip2 komprimiert.
Optionen:
-c
→ Archiv erzeugen,-x
→ Archiv entpacken,-t
→ Inhalt von Archiv auflisten,-f Archiv
→ die Datei Archiv für die Operationen verwenden,-z
→ mit gzip komprimieren,-j
→mit bzip2 komprimieren.
$ tar -cjf archiv.tar.bz2 src notizen.org
$ ls -l archive.tar.bz2
-rw-rw-r-- 1 thomas thomas 720569 Dec 5 20:31 archive.tar.bz2
»
»
»
»
»
»
»
»
dd - Kopiert Dateiinhalte einer Datei auf eine andere.
Syntax:
dd [Operanden...]
.Kann auch direkt von Geräten lesen und auf sie schreiben (und dadurch z.B. bootfähige Medien erzeugen oder beliebige Testdateien anlegen).
Operanden:
if=Datei
→ Eingabedatei (sonst Standardeingabe),of=Datei
→ Ausgabedatei (sonst Standardausgabe),bs=Bytes
→ Blockgröße (übliche Suffixes K, M, G, … möglich),count=Blöcke
→ Anzahl der zu verarbeitenden Blöcke..$ dd if=/dev/zero of=leere_datei bs=1M count=10 10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0118872 s, 882 MB/s
»
»
»
»
wget - Lädt Dateien aus dem Internet herunter.
Viele Optionen, z.B. rekursives Herunterladen einer ganzen Webseite möglich.
curl - Vielseitiger als wget.
Kann nicht nur HTTP(S) und FTP (wie wget), sondern auch GOPHER, IMAP, LDAP, POP RTMP, SFTP, SCP, TELNET, …
Kann z.B. auch nur den HTTP-Kopf und nicht die gesamt Datei herunterladen, sehr nützlich zum Testen.
nc - Liest und schreibt Daten über Netzwerkschnittstellen.
Viele Einsatzmöglichkeiten (siehe Manpage).
Z.B. Datentransfer von Server auf Client: * Client-Seite:
nc -l 1234 > Datei
* Server-Seite:
nc server.address 1234 < Datei
LaTeX - Professionelles Schriftsatzprogramm.
Für wissenschaftliche Arbeiten bevozugt zu verwenden!
Basiert auf Text-Dateien, die in DVI-, PostScript- oder PDF-Dateien übersetzt werden.
»
»
»
»
»
»
»
tmux - Terminal Multiplexer.
Erlaubt das Arbeiten mit mehreren (Pseudo-)Terminals über ein ein Terminalfenster.
»
Sonstige Programme
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/
Abweichendes Copyright von Inhalten:
Das XKCD-Comic zu „sudo“ steht steht unter der CC BY-NC 2.5 Lizenz.
Man kann sich auch eine tmux-Session über mehrere Terminalfenster anzeigen lassen oder die Session im Hintergrund weiterlaufen lassen (ohne Terminalfenster) und sich erst später wieder damit verbinden. Das ist z.B. sehr nützlich, wenn man auf einem Server einen länger dauernden Befehl ausführen will, aber die Netzwerkverbindung zum Server nicht stabil ist oder man nicht das Ende abwarten will.
Ähnliches Programm ist screen.
mplayer, mencoder - Videoplayer und Konvertierer.
Sehr nützlich, kann so ziemlich alles wiedergeben, was es gibt.
mencoder, um Videodateien zu erstellen oder zu konvertieren.
Ausgabe auch in Textkonsole möglich (
mplayer -vo caca Videodatei
).»
»
»
»
»
ImageMagick, GraphicsMagick - Bildbetrachter und Konvertierer.
Kann Bilddateien in andere Formate konvertieren und dabei editieren (z.B. Auflösung ändern, zuschneiden, skalieren, Filter anwenden, …).
identify
→ Informationen zu einer Bilddatei ausgeben.convert
→ Bilddatei konvertieren.display
→ Bilddatei anzeigen.Und noch einige andere!
LibreOffice - Officepakte, Pendant zu Microsoft Office.
Enthält alles, was man für Büroarbeiten braucht.
»
»
»
»
»
»