Foliensatz 1
Wiederholung TPDCS1
Inhalt
• Betriebssystem Linux
• Bash
• Dateisystem
• Prozesse
• Speicher
• Reguläre Ausdrücke
• Befehle
Betriebssystem Linux
• Kernel (u.a. Prozessverwaltung, virtuelles Dateisystem, Speicher, Netzwerk)
• Shell (Bash)
• Systemprogramme (z.B. GNU coreutils)
• Multi-User (Benutzer, Gruppen, Rechte) und Multi-Tasking
Bash – Allgemeines
• Interaktiver Kommandozeileninterpreter
• Text wird vom Benutzer eingegeben, von der Shell interpretiert, die dann einen oder mehrere Befehle ausführt
• POSIX-kompatibel, einige nützliche Erweiterungen (z.B. [[ ... ]])
• Tips zur Bedienung:
• 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
• Tabulator-Taste zum Vervollständigen
• Hilfe zu Befehlen und Konfigurationsdateien in den Manpages!
• Umgebungsvariablen (PATH, HOME, USER, …)
ICT-Infrastruktur für Bildungsaufgaben | Sommersemester 2014 | Version: 2014-03-06 09:09 Seite 1 von 3
Bash – Konstrukte
• Reihenfolge der Verarbeitung einer Eingabezeile
• Auswertungsunterdrückung (Maskierungszeichen Backslash – \ – bzw. einfache/doppelte Anführungszeichen)
• Pipes (befehl1 | befehl2)
• Listen (befehl1; befehl2 && befehl3 || befehl4 &)
• Verbundbefehle (Ausführung in Sub-Shell, arithmetischer/logischer Ausdruck)
• Klammernexpansion (echo a{d,b,{1..3}}c)
• Pfadexpansion (rm datei*.tx?)
• Variablenexpansion (echo ${PATH/:/ - })
• Befehlssubstitution (VAR=$(cut -d: -f1 /etc/passwd))
• Bash-History-Expansion (echo !-1:$)
• Eingabe-/Ausgabe-Umleitung (befehl1 <file.txt bzw. befehl_1 > file.txt)
Bash Programmierung
• Tests (test, [, [[ ... ]])
• Verzweigungen (if, case)
• Schleifen (for, while)
• Funktionen (function name () { do_something; })
• Stellungs- und spezielle Parameter ($1, $@, $#, $?)
Dateisystem
• Virtuelles Dateisystem VFS (Abstraktionsschicht im Kernel, eine Sicht auf verschiedene Dateisysteme bzw. allgemeine Schnittstelle für Ein- und Ausgabe)
• Dateiattribute (Änderungsdatum, Besitzer, Gruppe, Berechtigungen, …)
• Berechtigungen (RWX, Besitzer/Gruppe/Rest, SUID, SGID, Sticky-Bit)
• Harte und weiche Links
Prozesse
• Kernel kann ELF-Binärprogramme, Skripts (Shebang!) und andere Binärprogramme mittels binfmt_misc Kernelmodul direkt ausführen
• Prozess = laufende Instanz eines Programmes (PID, PPID, UID, EUID, …)
• fork-Modell:
• Prozess A ruft fork() auf → Kindprozess B entsteht als Kopie des Prozesses A
• (Optional) Im Kindprozess B mittels exec() anderen Programmcode ausführen
• Prozess A warte auf Kindprozess B mittels wait() → Rückgabewert! – oder Kindprozess wird zu Zombie und vom init-Prozess entsorgt
• Interrupts (von Hardware über CPU an Kernel oder weiter über Kernel an Prozess; Scheduling!)
• Signale (von Prozess an anderen Prozess; HUP, INT, KILL, TERM, …)
ICT-Infrastruktur für Bildungsaufgaben | Sommersemester 2014 | Version: 2014-03-06 09:09 Seite 2 von 3
Speicher
• Virtueller Speicher für Prozess (vom Kernel verwaltet, Prozess kennt den tatsächlichen Ort von Daten im RAM nicht; erhöht Sicherheit und Flexibilität)
• Dynamisches Laden von Daten in den RAM mittels Page Fault Swap-Dateien bzw.
• Swap-Partitionen
Reguläre Ausdrücke
• Zeichenklassen (\d, \w, [a-z0-9])
• Quantoren (*, +, ?, {n,m})
• Gruppen und Referenzen ((?:...), \1)
• Alternativen (|)
• Anker (^, $, \b)
• Für Befehle wie sed und grep, Texteditoren, Programmiersprachen, …
Befehle
• whoami, who, w, last, id, script, less, which, locate, xargs
• pwd, cd, ls, mkdir, rmdir, rm, mv, cp, find, touch, stat, file, chmod, chown, chgrp, umask, ln, readlink
• ps, pstree, kill, pgrep, pkill, top, nice, renice, free, swapon, swapoff
• cat, split, head, tail, sort, cut, paste, uniq, nl, wc, expand, unexpand, tee
• echo, printf, read, alias, unalias, source, export, sleep, timeout, set, unset, shift, shopt, exec
• mount, umount, df, du
• su, sudo
Copyright und Lizenz
• Copyright: Thomas Leitner thomas.leitner@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/
ICT-Infrastruktur für Bildungsaufgaben | Sommersemester 2014 | Version: 2014-03-06 09:09 Seite 3 von 3