Zeiten Vorlesung: Wöchentlich, Do. 13:05-14:45, HS02 Ausgenommen: 06.11.2014, 18.12.2014 (vermutlich, nur VO!) Übung: Dezember & Januar, Do. 15:10-19:00, PC-Seminarraum 3 Genaue Termine: 4.12, 11.12, 18.12, 15.01, 22.01, 29.01
Kontakt Kontakt: Sascha Biberhofer sascha.biberhofer@univie.ac.at OMP-1, 02.132 Sprechstunde: Mo. 13:00-14:00
Inhalte & Ziele der VO Ziele: Grundlagen unixartiger Betriebssysteme und deren Administration.
Inhalte & Ziele der VO Ziele: Grundlagen unixartiger Betriebssysteme und deren Administration. Eigentlich: unixartig : GNU/Linux, *BSD Systeme (FreeBSD, OpenBSD,...)
Inhalte & Ziele der VO Inhalte: Prozesse & Prozessverwaltung Shells & Shellscripting Dateien, Dateisysteme, Benutzer & Berechtigungen
Betriebssysteme Definition : An operating system (OS) is software that manages computer hardware and software resources and provides common services for computer programs. Quelle: Wikipedia, http://en.wikipedia.org/wiki/operating System
Betriebssysteme Definition : An operating system (OS) is software that manages computer hardware and software resources and provides common services for computer programs. Quelle: Wikipedia, http://en.wikipedia.org/wiki/operating System Grundlegendes Problem: Nicht sonderlich klar definiert.
Betriebssysteme
Betriebssysteme Im Wesentlichen: Ein Betriebssystem bietet üblicherweise eine grundlegende Abstraktionsschicht zwischen einer Applikation und der darunterliegenden Hardware sowie Dienste und Schnittstellen für darüberliegende Anwendungen oder Nutzer eines Rechners.
Betriebssysteme Im Wesentlichen: Ein Betriebssystem bietet üblicherweise eine grundlegende Abstraktionsschicht zwischen einer Applikation und der darunterliegenden Hardware sowie Dienste und Schnittstellen für darüberliegende Anwendungen oder Nutzer eines Rechners. In der Praxis: Die meisten Betriebssysteme und Distributionen gehen mehr oder minder weit darueber hinaus und bieten je nach belieben zusätzliche Software an (Grafische Interfaces, Verwaltungsprogramme wie Paketmanager,...)
Betriebssysteme Beispiele: Verwaltung von Zugriffsrechten (Nutzer, Gruppen,...) Einheitliche Schnittstellen fuer Hardwarefunktionen (e.g. Netzwerk, Eingabegeraete, Audio,...) Speichermanagement (Virtuelle vs. Phyische Speicherbereiche, Zugriffsrechte, Swap,...) Prozessmanagement Grundlegendes User Interface (ttys, xorg, wayland, android ui,...)...
GNU/Linux Grundlegendes: GNU/Linux Distributionen bestehen üblicherweise aus dem Linux Kernel und dem GNU Userland sowie div. Zusatzpakete (e.g. Windowing Systems (Xorg, Wayland, Mir,...) oder Desktop Environments (e.g. KDE, GNOME,...)).
GNU/Linux Grundlegendes: GNU/Linux Distributionen bestehen üblicherweise aus dem Linux Kernel und dem GNU Userland sowie div. Zusatzpakete (e.g. Windowing Systems (Xorg, Wayland, Mir,...) oder Desktop Environments (e.g. KDE, GNOME,...)). Historisches: 1983: GNU Projekt beginnt ein freies Unix zu entwickeln.
GNU/Linux Grundlegendes: GNU/Linux Distributionen bestehen üblicherweise aus dem Linux Kernel und dem GNU Userland sowie div. Zusatzpakete (e.g. Windowing Systems (Xorg, Wayland, Mir,...) oder Desktop Environments (e.g. KDE, GNOME,...)). Historisches: 1983: GNU Projekt beginnt ein freies Unix zu entwickeln. 1991: Linus Torvalds veröffentlicht die erste Version des Linux Kernels
GNU/Linux Grundlegendes: GNU/Linux Distributionen bestehen üblicherweise aus dem Linux Kernel und dem GNU Userland sowie div. Zusatzpakete (e.g. Windowing Systems (Xorg, Wayland, Mir,...) oder Desktop Environments (e.g. KDE, GNOME,...)). Historisches: 1983: GNU Projekt beginnt ein freies Unix zu entwickeln. 1991: Linus Torvalds veröffentlicht die erste Version des Linux Kernels 1992: Linux Kernel unter GPL veröffentlicht wird zum Kernel des GNU Userlands.
GNU/Linux Randbemerkung: Ebenfalls 1992: 386BSD wird als freies Betriebssystem unter der BSD Lizenz veröffentlicht. Später: FreeBSD, OpenBSD, NetBSD.
Grundlagen Shells: Grundlegendes Werkzeug zur Systemadministration: Command Line Interface / Unix Shells interpretiert Eingaben, führt Programme aus, managed Ein-/Ausgaben,...
Grundlagen Shells: Grundlegendes Werkzeug zur Systemadministration: Command Line Interface / Unix Shells interpretiert Eingaben, führt Programme aus, managed Ein-/Ausgaben,... Leseempfehlung: Neal Stephenson In the Beginning was the Command Line (http://www.cryptonomicon.com/beginning.html)
Grundlagen Beispiel: ~ % ls -alh / total 152 drwxr-xr-x 2 root root 4096 Sep 28 16:13 bin/ drwxr-xr-x 4 root root 4096 Aug 13 15:14 boot/ drwxr-xr-x 20 root root 3980 Oct 1 19:59 dev/ drwxr-xr-x 129 root root 12288 Oct 1 18:18 etc/...
Grundlagen Beispiel: ~ % ls -alh / total 152 drwxr-xr-x 2 root root 4096 Sep 28 16:13 bin/ drwxr-xr-x 4 root root 4096 Aug 13 15:14 boot/ drwxr-xr-x 20 root root 3980 Oct 1 19:59 dev/ drwxr-xr-x 129 root root 12288 Oct 1 18:18 etc/... Vorteile einer Shell: Verkettung von Befehlen und globbing /pattern expansion liefert eine einfache Möglichkeit komplexe Operationen durchzuführen: grep " ^2014 " ~/. cmus / tracklist sed -re s %... -.. -....:..:.. (.+) - (.+) \[.*\] [0-9]*%\2 (\1) % tr [A-Z] [a-z] sort uniq -c sort - n tail -n 20
Anatomie einer Eingabe Befehle: Es gibt im wesentlichen 3 Befehlstypen: Ausführbare Programme (Binaries, Skripte,...) Builtins/Funktionen Alias
Anatomie einer Eingabe Befehle: Es gibt im wesentlichen 3 Befehlstypen: Ausführbare Programme (Binaries, Skripte,...) Builtins/Funktionen Alias Nützliches: Der Befehl which kann genutzt werden um den Typ eines Befehls zu erhalten.
Anatomie einer Eingabe Bemerkung: Builtin Befehle variieren von Shell zu Shell.
Anatomie einer Eingabe Bemerkung: Builtin Befehle variieren von Shell zu Shell. Beispiel: zsh: bash: ~ % which which which : shell built -in command ~> which which /usr /bin / which
Anatomie einer Eingabe Parameter: Die meisten Befehle erlauben es, Parameter zu übergeben, die dann vom Programm entsprechend interpretiert werden und dessen Ablauf entsprechend verändern.
Anatomie einer Eingabe Parameter: Die meisten Befehle erlauben es, Parameter zu übergeben, die dann vom Programm entsprechend interpretiert werden und dessen Ablauf entsprechend verändern. Beispiel: ls -alh /: ls ist der eigentliche Befehl, an den zwei Argumente übergeben werden: -alh und /. -alh ist dabei eine Kurzform für die Optionen --all -l --human-readable. / gibt an, welches dass das root Verzeichnis ausgegeben werden soll.
Anatomie einer Eingabe Manpages: Die meisten Befehle besitzen eine zugehörige manpage, die ihre Verwendung dokumentiert. Manpages können mit dem Befehl man aufgerufen werden.
Anatomie einer Eingabe Manpages: Die meisten Befehle besitzen eine zugehörige manpage, die ihre Verwendung dokumentiert. Manpages können mit dem Befehl man aufgerufen werden. Beispiel: man ls: NAME ls - list directory contents SYNOPSIS ls [OPTION]... [FILE]......
Anatomie einer Eingabe Bemerkung zu manpages: Konventionen in der Synopsis: [ ] für optionale Argumente für Alternativen ( oder )... für Argumente, die öfter auftreten dürfen.
Anatomie einer Eingabe Bemerkung zu manpages: Konventionen in der Synopsis: [ ] für optionale Argumente für Alternativen ( oder )... für Argumente, die öfter auftreten dürfen. Beispiel: ls # gibt aktuelles Verzeichnis aus. ls / /usr # gibt / und /usr Verzeichnis aus.
Anatomie einer Eingabe Bemerkung zu Befehlen: Die Shell sucht üblicherweise nach Programmen in Verzeichnissen, die in der $PATH-Variable angegeben sind.
Anatomie einer Eingabe Bemerkung zu Befehlen: Die Shell sucht üblicherweise nach Programmen in Verzeichnissen, die in der $PATH-Variable angegeben sind. Beim Aufruf von Befehlen forkt sich die Shell, damit ein Befehl die Shell selbst nicht manipulieren kann. Hat v.a. Einfluss auf Variablen!
Anatomie einer Eingabe Bemerkung zu Befehlen: Die Shell sucht üblicherweise nach Programmen in Verzeichnissen, die in der $PATH-Variable angegeben sind. Beim Aufruf von Befehlen forkt sich die Shell, damit ein Befehl die Shell selbst nicht manipulieren kann. Hat v.a. Einfluss auf Variablen! Es gibt keine festen Regel für Parameter.
Anatomie einer Eingabe Bemerkung zu Befehlen: Die Shell sucht üblicherweise nach Programmen in Verzeichnissen, die in der $PATH-Variable angegeben sind. Beim Aufruf von Befehlen forkt sich die Shell, damit ein Befehl die Shell selbst nicht manipulieren kann. Hat v.a. Einfluss auf Variablen! Es gibt keine festen Regel für Parameter. Beispiel: ls -a --list --human-readable firefox -P default -no-remote ip l s dev eth0 up
Anatomie einer Eingabe Bemerkung zu Parametern: Parameter sind durch Leerzeichen getrennt. Um diese Trennung zu vermeiden können Argumente zwischen " oder eingeschlossen werden, oder Leerzeichen mit \ escaped werden: ls some directory Verzeichnisse some und directory ls some\ directory Verzeichnis some directory ls "some directory" Ebenfalls some directory
Anatomie einer Eingabe Bemerkung zu Parametern: Parameter sind durch Leerzeichen getrennt. Um diese Trennung zu vermeiden können Argumente zwischen " oder eingeschlossen werden, oder Leerzeichen mit \ escaped werden: ls some directory Verzeichnisse some und directory ls some\ directory Verzeichnis some directory ls "some directory" Ebenfalls some directory Randnotiz: " und werden von einer Shell normalerweise unterschiedlich behandelt (Parameter expansion). e.g. echo "$PATH" und echo $PATH
Aufbau Aufbau: Ein typischer Unix-Verzeichnisbaum beginnt mit dem root-verzeichnis /. Achtung: Das Verzeichnis /root ist das Homedirectory des root users.
Aufbau Aufbau: Ein typischer Unix-Verzeichnisbaum beginnt mit dem root-verzeichnis /. Achtung: Das Verzeichnis /root ist das Homedirectory des root users. Bemerkung: Es geht aus dem Verzeichnisbaum nicht hervor wo sich die unter einem Verzeichnis befindlichen Daten tatsächlich befinden (e.g. USB-Stick, NFS-mount, tmpfs,...). Unterschied zu Windows Dateisysteme können an beliebiger Stelle eingebunden werden. Transparent für darüberliegende Prozesse
Aufbau Wesentliche Verzeichnisse: / # root filesystem, wird vom kernel inital bereitgestellt / usr / # enthaelt weitere Programme, Libraries, etc fuer den normalen Betrieb / dev / # enthaelt devices ( tmpfs, von udev gemanaged ) / etc / # Systemkonfigurationen / var / # Laufzeitdaten ( mail spools, logs, caches,...) / tmp / # temporaere Dateien / home / # ueblicherweise Userhomes. / proc / # " illusionary filesystem ", exportiert Kerneldaten in Dateiform / sys / # aehnlich zu proc
Aufbau FHS: Die grundlegende Verzeichnisstruktur ist im FHS (Filesystem Hirachy Standard) festgelegt. Nicht alle Programme halten sich an den FHS (udev!)
Aufbau Befehle zur Navigation: ls Gibt Verzeichnisinhalte aus. cd Wechselt Arbeitsverzeichnis (cchange directory) pwd Gibt Pfad zu aktuellem Verzeichnis aus (print working directory)