Glossar
Die Begriffe, die im Kurs immer wieder vorkommen. Englische Fachbegriffe bleiben englisch, weil sie so in Manpages, Fehlermeldungen und Stellenanzeigen stehen.
Alias: Abkürzung für einen Befehl, die nur in der Shell gilt, zum Beispiel alias ll='ls -lah'. Definiert in ~/.bashrc, zeigt alias alle, unalias löscht.
Argument: Was ein Befehl bearbeitet, meist ein Datei- oder Verzeichnisname. In cp -r quelle ziel sind quelle und ziel Argumente, -r ist eine Option.
apt: Paketverwaltung von Debian und Ubuntu. apt install, apt update, apt upgrade. In Skripten apt-get, weil dessen Ausgabe stabil bleibt.
Bash: Bourne Again Shell, die Standard-Shell auf Ubuntu und den meisten Linux-Systemen. Interaktiv am Prompt und als Sprache für Skripte.
Boot: Der Startvorgang: Firmware (UEFI), Bootloader (GRUB), Kernel, dann systemd als erster Prozess.
Branch: Eigenständige Entwicklungslinie in Git. main ist der Hauptbranch, für jede Aufgabe legst du einen eigenen an.
Builtin: Befehl, der in der Shell selbst eingebaut ist und nicht als Programm auf der Platte liegt: cd, echo, read, export. type befehl verrät es.
Commit: Ein gespeicherter Zustand des Repositorys mit Nachricht, Autor und Zeitstempel. Jeder Commit hat eine eindeutige ID (Hash).
Container: Isolierter Prozess mit eigenem Dateisystem und Netzwerk, der sich den Kernel mit dem Host teilt. Leichter als eine VM, startet in Sekunden. Docker ist das bekannteste Werkzeug.
cron: Dienst, der Befehle zeitgesteuert ausführt. Konfiguration mit crontab -e, Format: Minute Stunde Tag Monat Wochentag Befehl.
Daemon: Prozess, der im Hintergrund läuft und auf Aufträge wartet, meist mit d am Ende des Namens: sshd, systemd, dockerd.
Distribution: Linux-Kernel plus Paketverwaltung, Werkzeuge und Konfiguration, zusammengestellt von einem Projekt oder einer Firma: Ubuntu, Debian, Fedora, Arch.
Docker Compose: Beschreibt mehrere Container, Netze und Volumes in einer compose.yaml und startet sie gemeinsam mit docker compose up.
dpkg: Das Low-Level-Werkzeug hinter apt, das .deb-Pakete installiert. dpkg -l listet, dpkg -S findet das Paket zu einer Datei.
Environment (Umgebung): Variablen, die ein Prozess an seine Kindprozesse vererbt: PATH, HOME, LANG. export macht eine Shell-Variable zur Umgebungsvariablen, env zeigt alle.
Exit-Status: Zahl von 0 bis 255, die ein Programm beim Beenden zurückgibt. 0 bedeutet Erfolg, alles andere Fehler. In der Shell steht er in $?.
FHS: Filesystem Hierarchy Standard, die Norm, die festlegt, was wohin gehört: Programme nach /usr/bin, Konfiguration nach /etc, Logs nach /var/log, Benutzerdaten nach /home.
Fork: In Git: eigene Kopie eines fremden Repositorys auf dem Server. Im Betriebssystem: Erzeugen eines neuen Prozesses als Kopie des aktuellen.
GID: Group ID, die Nummer einer Gruppe. Steht in /etc/group, id zeigt deine.
Glob: Dateinamenmuster mit *, ? und [...], das die Shell vor dem Aufruf des Befehls in passende Namen auflöst. Siehe Wildcard.
GRUB: Der Bootloader, der nach der Firmware den Kernel lädt. Sein Menü erscheint beim Start mit Shift oder Esc und erlaubt den Recovery-Modus.
Hardlink: Zweiter Name für dieselbe Datei (denselben Inode). Die Datei ist erst weg, wenn alle Namen gelöscht sind. Nur innerhalb eines Dateisystems, nicht für Verzeichnisse.
Home-Verzeichnis: Das persönliche Verzeichnis eines Benutzers, /home/name, abgekürzt ~. Hier liegen deine Dateien und die Konfigurationsdateien mit Punkt am Anfang.
Hypervisor: Software, die virtuelle Maschinen ausführt. Typ 1 läuft direkt auf der Hardware (Proxmox, ESXi, Hyper-V), Typ 2 als Programm in einem Betriebssystem (VirtualBox, VMware Workstation, UTM).
Image: Schreibgeschützte Vorlage für Container (Docker-Image) oder ein Abbild eines Datenträgers (ISO-Image zur Installation). Aus einem Image entstehen beliebig viele Container.
Inode: Datenstruktur im Dateisystem, die alles über eine Datei weiss ausser dem Namen: Besitzer, Rechte, Grösse, Zeitstempel, Position der Datenblöcke. ls -i zeigt die Nummer.
Journal: Das Log von systemd, das alle Meldungen von Diensten und dem Kernel sammelt. Lesen mit journalctl.
Kernel: Der Kern des Betriebssystems, der Hardware, Speicher, Prozesse und Dateisysteme verwaltet. Linux ist genau genommen nur der Kernel; der Rest ist die Distribution.
Locale: Einstellungen für Sprache, Zeichensatz, Datum und Zahlenformat eines Benutzers, zum Beispiel de_CH.UTF-8. locale zeigt sie.
Log: Protokolldatei, in die Programme schreiben, was sie tun. Klassisch unter /var/log, bei systemd-Diensten im Journal.
Manpage: Handbuchseite zu einem Befehl, einer Datei oder einem Systemaufruf, lesbar mit man befehl. In Abschnitte nummeriert: 1 Befehle, 5 Dateiformate, 8 Administration.
Merge: Zusammenführen zweier Branches in Git. Wenn beide dieselbe Stelle geändert haben, entsteht ein Konflikt, den du von Hand auflöst.
Merge Request: Bitte an das Team, einen Branch in main zu übernehmen, mit Diskussion, Review und automatischen Prüfungen. Bei GitHub heisst dasselbe Pull Request. So gibst du im Kurs Lösungen ab.
Mountpoint: Verzeichnis, an dem ein Dateisystem in den Verzeichnisbaum eingehängt ist, etwa /mnt/usb oder /. mount und lsblk zeigen, was wo hängt.
Option: Schalter, der das Verhalten eines Befehls ändert: kurz -l oder lang --all. Steht in der Manpage unter OPTIONS.
Owner (Besitzer): Der Benutzer, dem eine Datei gehört. Zusammen mit der Gruppe und den Rechtebits bestimmt er, wer lesen, schreiben und ausführen darf.
Paket: Installierbare Einheit der Paketverwaltung mit Programm, Dateien, Abhängigkeiten und Installationsskripten. Bei Ubuntu .deb, bei Fedora .rpm.
PATH: Umgebungsvariable mit der Liste der Verzeichnisse, in denen die Shell nach Programmen sucht, getrennt durch Doppelpunkt. Das aktuelle Verzeichnis gehört bewusst nicht dazu, darum ./skript.sh.
PID: Process ID, die eindeutige Nummer eines laufenden Prozesses. ps, pgrep und $$ zeigen sie, kill braucht sie.
Pipe: Das Zeichen |, das die Ausgabe eines Befehls als Eingabe an den nächsten weiterreicht: ps aux | grep ssh.
Prompt: Die Eingabeaufforderung der Shell, zum Beispiel alice@vm:~$. Das $ am Ende steht für einen normalen Benutzer, # für root.
Prozess: Ein laufendes Programm mit eigener PID, Besitzer, Speicher und Umgebung. Jeder Prozess hat einen Elternprozess; ganz oben steht systemd mit PID 1.
Quoting: Anführungszeichen, die der Shell sagen, was sie nicht interpretieren soll. Doppelte "..." lassen $var zu, einfache '...' nehmen alles wörtlich, \ schützt ein einzelnes Zeichen.
Redirection (Umleitung): Ausgabe oder Eingabe eines Befehls in eine Datei lenken statt aufs Terminal: >, >>, 2>, <.
Repository: Verzeichnis, dessen Geschichte Git verwaltet, mit allen Commits im versteckten Ordner .git. Lokal auf deinem Rechner und als Kopie auf dem Server (Remote).
root: Der Administrator mit UID 0, der alles darf. Auf Ubuntu arbeitest du nicht als root, sondern mit sudo. Nicht verwechseln mit dem Wurzelverzeichnis / und dem Home-Verzeichnis /root.
Shebang: Die erste Zeile eines Skripts, #!/usr/bin/env bash oder #!/bin/bash, die dem Kernel sagt, welcher Interpreter das Skript ausführen soll.
Shell: Programm, das deine Befehle entgegennimmt, interpretiert und Programme startet. Bash, zsh, fish sind Shells. Das Terminal ist nur das Fenster, in dem die Shell läuft.
Snapshot: Gespeicherter Zustand einer VM, zu dem du jederzeit zurückkehren kannst. Vor jedem Experiment anlegen.
stdin, stdout, stderr: Die drei Standardkanäle jedes Prozesses: Eingabe (0), Ausgabe (1) und Fehlerausgabe (2). Umleitungen und Pipes arbeiten mit diesen Nummern.
sudo: Führt einen einzelnen Befehl mit Root-Rechten aus, nach Eingabe des eigenen Passworts. Wer darf, steht in /etc/sudoers und in der Gruppe sudo.
Symlink (symbolischer Link): Datei, die nur auf einen anderen Pfad zeigt, wie eine Verknüpfung. ln -s ziel name. Zeigt das Ziel nicht mehr, ist der Link kaputt (dangling).
systemd: Der erste Prozess beim Start (PID 1) und das System, das Dienste, Timer, Mounts und Logs verwaltet. Bedient mit systemctl und journalctl.
Target: Gruppe von Units in systemd, die einen Systemzustand beschreibt, etwa multi-user.target (Server ohne GUI) oder graphical.target. Ersetzt die alten Runlevel.
Terminal: Ursprünglich ein Gerät mit Bildschirm und Tastatur, heute ein Programm (Terminal-Emulator), das Text ein- und ausgibt und darin eine Shell startet.
Timer: systemd-Unit, die eine andere Unit zeitgesteuert startet. Die moderne Alternative zu cron, mit Log im Journal. systemctl list-timers.
UID: User ID, die Nummer eines Benutzers. root hat 0, Systembenutzer haben kleine Nummern, normale Benutzer ab 1000. Steht in /etc/passwd.
Unit: Ein Objekt, das systemd verwaltet, beschrieben in einer Datei: .service (Dienst), .timer, .mount, .target. Eigene Units liegen in /etc/systemd/system/.
Variable: Benannter Speicherplatz in der Shell: name=wert setzt, $name liest. Ohne export sieht sie nur die aktuelle Shell.
Virtuelle Maschine (VM): Ein vollständiger simulierter Rechner mit eigenem Kernel, der als Gast auf einem Host läuft. Die lokale VM und die Proxmox-VM im Kurs sind solche Gäste.
Volume: Beständiger Speicher für Container. Container sind wegwerfbar, Daten in einem Volume überleben docker compose down und neue Images.
Wildcard: Platzhalter in Dateinamen: * beliebig viele Zeichen, ? genau eines, [a-z] eines aus der Menge. Die Shell ersetzt sie vor dem Aufruf des Befehls.
Working Directory (Arbeitsverzeichnis): Das Verzeichnis, in dem du dich gerade befindest. pwd zeigt es, cd ändert es, relative Pfade beziehen sich darauf.