LPIC-1 Cheat Sheet Module 101

This page contains my brain dump while learning for the LPIC-1 Module 101 certificate. The notes contain German comments – please just ignore them if you don’t speak that language.
Disclaimer: This page does not contain hints about what the exam contained in my case. I won’t tell you! ­čÖé

Sorry about the bad formatting – I just copied and pasted this stuff from my private wiki.

====== LPIC 1 - Pr├╝fung 101 ======
===== 101 - Systemarchitektur =====
==== 101.1 - Hardware-Einstellungen ermitteln und konfigurieren ====
  * /sys/ - Virtuelles Dateisystem, in dem Linux ab Kernel 2.6 Informationen und Konfigurationen abliegt (und teils neue Konfigurationen einlesen kann).
  * /proc - Virtuelles Dateisystem, welches unter Linux/Unix Informationen zu Prozessen enth├Ąlt.
  * /dev - Virtuelles Dateisystem, welches Linux zum Bereitstellen und Pr├Ąsentieren von Devices nutzt. Man k├Ânnte auch sagen: Die Ger├Ąte werden ins Userland exportiert.
  * modprobe - F├╝gt Module zum Linux-Kernel hinzu oder entfernt diese. -c, --show-depends
  * modinfo -Zeigt Details ├╝ber ein bestimmtes Modul an.
  * rmmod -Entfernt Module w├Ąhrend der Laufzeit.
  * insmod - Integriert Module w├Ąhrend der Laufzeit in den Kernel.
  * depmod - L├Âst Abh├Ąngigkeiten zwischen den Modulen ab (siehe Datei modules.dep).
  * lsmod - Formatiert die Ausgabe von cat /proc/modules und zeigt somit an, welche Module derzeit eingeh├Ąngt sind.
  * lspci - Zeigt Informationen ├╝ber alle vorhandenen PCI-Schnittstellen und die eingeh├Ąngten Karten ein. -v
  * lsusb - Zeigt Informationen ├╝ber alle vorhandenen USB-Schnittstellen und die verbundenen Ger├Ąte an. -t, -D <device>
  * Unterschied modprobe - lsmod etc.: modprobe kann Module nachladen und rauschmeissen. Zus├Ątzlich kann es Module auflisten, die nachgeladen werden k├Ânnen.
  * Konfigurationsdateien von modprobe: modules.conf, modprobe.conf, modprobe.conf.local
  * vmlinuz ist ein Symlink unter /boot/, welcher auf den tats├Ąchlichen Namen des Kernels zeigt.
  * Kernel-Module liegen i.d.R. unter /lib/modules. Pro installiertem Kernel wird hier ein Unterverzeichnis angelegt, welches den Kernel-Namen tr├Ągt.
  * Die Kernel-Verzeichnisse besitzen meist Unterordner, die nach Kategorien (wie "net") benannt sind.
  * Auf einer Festplatte k├Ânnen i.d.R. nur vier Partitionen erstellt werden.
  * Eine erweiterte Partition kann nicht direkt verwendet werden. Erweiterte Partitionen dienen als eine Art Beh├Ąlter. Pro Festplatte kann nur eine erweiterte Partition existieren. Eine erweiterte Partition kann bis zu zw├Âlf logische Partitionen beherbergen.
  */proc/interrupts enth├Ąlt Informationen ├╝ber die vom System verwendeten Interrupts.
  */proc/ioports enth├Ąlt die Informationen ├╝ber die von Hardware-Komponenten verwendeten I/O-Adressen.
  */proc/dma enth├Ąlt eine Liste an DMA-Kan├Ąlen.
  *DMA = Direct Memory Access, eine Zugriffsart, die ├╝ber ein Bus-System direkt auf den Speicher zugreift. Peripherie (wie beispielsweise eine Netzwerkkarte) kann somit ohne Umwege (also ohne ├╝ber die CPU gehen zu m├╝ssen) direkt mit dem Speicher reden.
  * USB 1.1: Zwei verschiedene USB-Host-Controller-Typen existieren, OHCI (Open Host Controller Interface) und UHCI (Universal Host Controller Interface); Die entsprechenden Treiber dazu: usb-ohci.o sowie usb-uhci.o
  * USB 2.0 kennt nur einen Controller-Typ: EHCI (Enhancend Host Controller Interface); Treiber: usb-ehci.o
  * usbmgr: Daemon, der USB-Ger├Ąte verwaltet.
  * hotplug: Daemon, der USB-, PCMCIA- und FireWire-Komponenten verwalten kann.
  * hald: Daemon, der das Hardware Abstraction Layer repr├Ąsentiert. Er informiert dbus dar├╝ber, wenn Wechsellaufwerke angeschlossen oder entfernt wurden.
  * udev verwaltet als Ger├Ątemanager /dev.
  * USB wird erst ab Kernel 2.2.18 unterst├╝tzt.
==== 101.2 - Das System starten ====
  * </var/log/messages - Enth├Ąlt Informationen zum Boot und die initialisierte Hardware (= Log von dmesg).
  * dmesg ("display message" oder "driver message") - Gibt den Message-Buffer des Kernels aus. -r, -c, -s, -n
  * BIOS
  * Bootloader
  * Kernel
  * init
  * Der MBR (Master Boot Record) geh├Ârt keiner Partition an, sondern ist eigenst├Ąndig. Er ist immer genau 512 Byte gro├č und befindet sich immer ganz am Anfang einer Festplatte in Sektor 0, Spur 0. Das BIOS liest beim Boot-Vorgang einfach die Spur 0 des Sektors 0 aus (den MBR..).
  * MBR ansehen: dd if=/dev/sda bs=512 count=1 |xxd; Die Partitionstabelle beginnt in der f├╝nfsten Zeile von unten, mit 8010. Der Eintrag f├╝r jede Partition entspricht genau einer Zeile. Das Ende der Partitionstabelle wird mit 55aa markiert. Die Partition, die mit 80 beginnt, ist die Startpartition.
  * /etc/lilo.conf
  * /boot/grub/grub.conf
  * Kernel-Parameter k├Âknnen auch w├Ąhrend der Startzeit durch den Bootloader ├╝bergeben werden. Beispiel: acpi=off apm=off (diese Parameter sind immer durch ein Leerzeichen getrennt).
  * init=/bin/bash als Kernel-Parameter bewirkt, dass man readonly ins System booten kann, z. B. wenn man das Kennwort vergessen hat. Mit mount -o remount,rw / und passwd root kann man dann das Passwort neu setzen.
==== 101.3 - Runleven wechseln, System anhalten und neu starten ====
  * /etc/inittab
  * shutdown f├Ąhrt das System herunter und benachrichtigt die derzeit angemeldeten Benutzern.
  * shutdown -f -r now bootet das System sofort neu und verhindert, dass ggf. ein Filesystem-Check beim Startvorgang ausgef├╝hrt wird.
  * init: Prozess zum Wechseln der Runlevel und Vater aller Prozesse, besitzt daher immer die PID 1.
  * /etc/init.d
  * telinit
  * Ein Runlevel ist ein Zustand bzw. eine Funktionsstufe, in der sich ein Linux befinden kann. Das Runlevel 0 bedeutet ein Herunterfahren des Systems, Runlevel 1 (= Runlevel s) ist ein Single-User-Mode ohne Netzwerkmodus, Runlevel 2 ist meist ein Zustand ohne grafische Unterst├╝tzung aber im Multi-User-Mode, Runlevel 3 stellt meist noch Netzwerk- und Grafikfunktionalit├Ąt bereit, Runlevel 4 wird meist nicht genutzt, Runlevel 5 ist die h├Âchste Stufe und bietet "alles" und Runlevel 6 signalisiert init einen Reboot.
  * /et/inittab legt das default Runlevel f├╝r den Systemstart fest. Hier k├Ânnen auch weitere Konsolen hinzugef├╝gt oder festgelegt werden, was beim Dr├╝cken von [Strg] + [Alt] + [Del] geschieht.
  * telinit q veranlasst den init-Prozess im laufenden Betrieb die datei inittab neu einzulese.
  * /etc/init.d/sendmail stop oder aber /etc/rc.d/sendmail stop
  * Das Kommando "runlevel" zeigt an, in welchem Runlevel sich das System gerade befindet.
  * Zum Wechseln des Runlevels verwendet man das Kommando init oder telinit.
===== 102 - Linux-Installation und Paketverwaltung =====
==== 102.1 - Festplattenaufteilung planen ====
  * /
  * /var
  * /home
  * Swap
  * Mountpoints
  * Partitionen
  * Sinnvolle Partitionierung: /boot mit max. 50 MB, /home und /var auf eigenen Partitionen, "doppelt so viel Swap wie verf├╝gbarer RAM", Rest auf /. /var mind. 2 GB, /usr mind. 10 GB, /tmp mind. 500 MB.
==== 102.2 - Einen Boot-Manager installieren ====
  * /boot/grub/menu.lst
  * grub-install
  * MBR
  * Superblock
  * /etc/lilo.conf, enth├Ąlt u.a. die Angaben zu label, map, initrd und root. Map ist meist /boot/boot.b.
  * LILO (Linux Loader)
  * GRUB (Grand Unified Bootloader)
  * Bootloader = Boot-Strap-Loader
  * LILO = Zweistufiger Bootloader, einmal innerhalb vom MBR und eben LILO selbst
  * Die Partitionstabelle ist 64 Byte gro├č.
  * Das Ende des MBRs ben├Âtigt 2 Byte (55 AA = Flags). Sommit bleiben f├╝r den LILO gerade mal 512 - 64 - 2 = 446 Byte ├╝brig.
  * LILO beim Boot: Es wird versucht den Schriftzug LILO anzeigen zu lassen. Jeder Buchstabe steht dabei f├╝r einen geladenen Zustand. Wird gar nichts angezeigt, so wurde LILO kaum geladen. Wenn nur L da steht, konnte die Datei /boot/boot.b nicht gefunden werden. Wenn LI angezeigt wird, konnte die Datei /boot/boot.b zwar gelesen, aber nicht ausgef├╝hrt werden. Bei LIL konnte die Map-Datei nicht gelesen werden. Bei LIL? wurde die zweite Stufe in einen falschen Speicherbereit geleden und LIL ist ein Indikator daf├╝r, dass die Map-Datei ung├╝ltig ist. LILO bedeutet, dass der zweite Stage erfolgreich geladen wurde.
  * Bei Änderungen am LILO muss der Map-Installer aufgerufen werden: lilo
  * Grub besitzt im ├ťbrigen mittlerweile drei Stufen: 1, 1,5 und 2. Der erste Stage befindet sich im MBR (eine Kopie davon liegt meist unter /boot/grub/stage1), Stage 1,5 stimmt mit dem Dateisystem ├╝berein (z. B. /boot/grub/reiserfs_stage_1_5) und Stage 2 ist in /boot/grub/stage2 zu finden. Dieses Programm stellt das Boot-Men├╝ f├╝r den Benutzer bereit und ist auch f├╝r das Starten des Kernels zust├Ąndig.
  * Manuelles Starten in der Grub-Shell: root (hd0,0); kernel /boot/vml... root=/dev/sda2; initrd /boot/initrd...; boot
  * Die Datei /boot/grub/device.map beinhaltet ein Mapping von Grub-Bezeichnungen auf die realen Devices.
  * menu.lst ist meinst ein Softlink auf grub.conf.
==== 102.3 - Shared Libraries verwalten ====
  * ldd - Identifiziert, von welchen Librarys ein Programm abh├Ąngt.
  * ldconfig - List die Datei /etc/ld.so.conf ein und teilt dem dynamischen Linker mit, dass neue Bibliotheken installiert wurden und verf├╝gbar sind.
  * /etc/ld.so.conf - Enth├Ąlt Verzeichnisse, in denen dynamische Librarys vorhanden sind.
  * LD_LIBRARY_PATH 
  * Libs (Bibliotheken) besitzen unter Windows die Dateiendung .dll, w├Ąhrend sie unter Windows Shared Librarys genannt werden und mit .so enden (Shared Object).
  * Programme, die mit solchen Shared Librarys arbeiten, bezeichnet man als synamically linked, w├Ąhrend Programme, die den Code der Shared Librarys in sich selbst tragen, als statically linked bezeichnet werden.
  * ldconfig -p |less zeigt den aktuellen Inhalt der /etc/ld.so.cache an.
==== 102.4 - Debian-Paketverwaltung verwenden ====
  * /etc/apt/sources.list
  * dpkg
  * dpkg-reconfigure
  * apt-get
  * apt-cache: apt-cache stats
  * aptitude
  * (Debian-)Pakete folgen meist einer bestimmten Namenskonvention. Beispiel: fortune-mod_1.99.1-3_i386.deb (Name: fortune-mod; Version: 1.99.1; Revisionsnummer/Release:3; Architektur: i386).
  * /etc/dpkg/dpkg.conf
  * /var/lib/dpkg/info: In diesem Verzeichnis befinden sich zu jedem installierten Paket mehrere Scripte und Dateien, die f├╝r die korrekte De-/Installation ben├Âtigt werden. Dort existiert auch die Datei <App-Name>.list, welche eine Auflistung aller zur Software geh├Ârenden Dateien und Verzeichnisse beinhaltet.
  * /var/lib/dpkg/status: In dieser Status-Datei sind Informationen ├╝ber bereits installierte Pakete hinterlegt.
  * /var/lib/dpkg/available beinhaltet eine Liste an verf├╝gbaren Paketen.
  * /etc/apt/apt.conf enth├Ąlt meist nur den Proxy, falls notwendig.
  * /etc/apt/sources.list enth├Ąllt die Quellen f├╝r apt-get.
  * dpkg -i installiert Pakete, dpkg -r entfernt sie wieder. Mit --purge werde im letzteren Fall auch die Konfigurationsdateien vom System geschmissen.
  * dpkg -s gibt den Status ├╝ber ein installiertes Paket aus.
  * dpkg -C zeigt Pakete, die nur teilweise auf dem System installiert sind.
  * dpkg -L zeigt die Dateien an, die mit dem Paket auf dem System gelandet sind.
  * dselect ist ein Frontend f├╝r dpkg. OMG!
  * dpkg-reconfigure bietet die M├Âglichkeit, bereits installierte Pakete neu zu konfigurieren. Mit dpkg-reconfigure -a konfiguriert alle Pakete auf dem System neu.
  * alien wandelt rpm, dpkg, tgz, pkg und slp in andere Paketformate um.
==== 102.5 - RPM- und YUM-Paketverwaltung verwenden ====
  * rpm
  * rpm2cpio
  * /etc/yum.conf
  * /etc/yum.repos.d/
  * yum
  * yumdownloader
  * Das Tool "rpm" selbst kann leider keine Abh├Ąngigkeiten aufl├Âsen. Hierf├╝r verwendet man Frontends wie yum.
  * Die Namenskonventionen von rpm-Paketen sind mit denen von dpkg nahezu identisch - nur wird ein Bindestrich anstelle von einem Unterstrich verwendet: bash-3.0-15.i586.rpm (Name: bash; Version: 3.0; Revisionsnummer/Release: 15; Architektur: i586).
  * Die Hauptkonfigurationsdatei von RPM ist die Datei rpmrc, meist unter /etc/rpmrc (muss manuell erstellt werden), /usr/lib/rm/rpmrc oder /usr/lib/rpmrc zu finden.
  * Die Konfigurationen, welche in /home/<user>.rpmrc hinterlegt werden, gelten nur f├╝r einen User.
  * Im Verzeichnis /usr/lib/rpm finden sich einige Scripte, die von RPM verwendet werden.
  * Die Datenbanken mit installierten Paketen, Dependencies, Conflicts und anderen Informationen f├╝r RPM befinden sich unter /var/lib/rpm. Diese Dateien k├Ânnen nicht mit einem Editor bearbeitet werden.
  * Tools: rpmbuild, rpme, rpmi, rpmqpack, rpmsign, rpmverify, rpm2cpio, rpmdb, rpmgraph, rpmlocate, rpmquery, rpmu, rpmlead, rpmsignature, rpmheader, rpmarchive und eben rpm selbst. F├╝r die Pr├╝fung ist nur rpm selbst relevant.
  * rpm -i, rpm -U (Aktualisierung, falls Paket noch nicht vorhanden wird es installiert), rpm -F (Aktualisierung, falls installiert), rpm -e (Deinstallation), rpm -h (Progressbar mit Hash-Zeichen #).
  * ACHTUNG: rpm -r steht NICHT f├╝r remove, sondern f├╝r requires!
  * Ein typisches Kommando w├Ąre: rpm -Uhv <.rpm-Package>
  * rpm --force
  * rpm --nodeps (Keine Pr├╝fung der Dependencies.)
  * rpm-Queries (Abfragen) sind in zwei Bereiche unterteilt: Package Selection Options und Query Options.
  * Ganz allgemein: rpm -q (q f├╝r "Query")
  * Package Selection Options = Dient zum Auffinden von Paketen
  * Query Options = Informationen ├╝ber ein bestimmtes Paket erhalten
  * rpm -qa (qa f├╝r query all) liefert eine Liste aller installierten RPM-Pakete.
  * rpm-qR zeigt Abh├Ąngigkeiten zu anderen Paketen an.
  * rpm -ql f├╝hrt die im Paket enthaltenen Dateien auf.
  * rpm -qc zeigt nur die Dokumentationsdateien des Paketes an.
  * rpm -qi zeigt umfangreiche Informationen zu einem Paket an.
  * Falls das Paket noch nicht installiert wurde, aber bereits als Datei vorliegt, muss ein "p" als Option mitgegeben werden: rpm -qpl
  * rpm -V (V f├╝r Verify) zeigt an, ob Dateien von einem Paket modifiziert oder gar gel├Âscht wurden. Indikatoren: S (Size), M (Mode), 5 (MD5), D (Device), L (link), U (User), G (Group) und T(Time).
  * rpm2cpio wandelt rpm-Pakete in .cpio-Packages um. Aus .cpio-Paketen kann man dann einzelne Dateien extrahieren. Bsp.: rpm2cpio samba-3.3.2-0.33.rpm |cpio -ivd /
  * usr/share/man/man7/samba.7
  * /etc/yum.conf, legt u.a. das Cache-Verzeichnis f├╝r Yum fest.
  * /var/cache/yum
  * /etc/yum/repos.d
  * yum search <..>
  * yum install <..>
  * yum remove <..>
  * ACHTUNG: yum update aktualisiert alle installierten Pakete und NICHT die Repositories!






===== 103 - GNU- und UNIX-Kommandos =====
==== 103.1 - Auf der Kommandozeile arbeiten ====
  * bash
  * echo
  * env - Zeigt alle gesetzten Environment-Variablen an.
  * exec
  * export
  * pwd
  * set - Zeigt alle gesetzten Shell-Variablen an.
  * unset
  * man
  * uname
  * history
  * Variablen: Umgebungsvariablen werden i.d.R. gro├č geschrieben (z. B. $VERISON), w├Ąhrend Shell-Variablen meist klein geschrieben werden (z. B. $i). Umgebungsvariablen gelten f├╝r alle Shells eines Benutzers, w├Ąhrend Shell-Variablen nur f├╝r die aktuelle "Konsole" zur Verf├╝gung stehen.
  * /etc/profile ist die erste Konfigurationsdatei, die bei der Anmeldung eines Benutzers eingelesen wird. Sie enth├Ąlt erste Environment-Variablen und die PATH-Anweisung.
  * /etc/bashrc kann von der .bashrc eines Benutzers geladen werden. Sie enth├Ąlt systemweite Einstellungen, Aliase und Funktionen.
  * ~/.bash_profile wird (falls vorhanden) nur beim Relogin eingelesen und direkt nach /etc/profile ausgef├╝hrt.
  * ~/.bash_login ist eine Alternative zu .bash_profile und wird auch nur dann abgearbeitet wenn die Datei .bash_profile nicht existiert.
  * ~/.profile ist die urspr├╝ngliche Konfigurationsdatei der Bash. Sie wird nur w├Ąhrend der Anmeldung eingelesen - und das auch nur dann, wenn weder eine .bash_profile- oder eine .bash_login-Datie im User-Verzeichnis existieren.
  * ~/.bashrc ist die andere, urspr├╝ngliche Konfigurationsdatei der Bash. Sie wird in jedem Fall eingelesen, auch beim Aufruf einer neuen Shell.
  * ~/.bash_logout ist eine optionale Datei, die wie der Name schon sagt beim Logout eines Benutzers ausgef├╝hrt wird. Sie k├Ânnte z. B. den Monitor l├Âschen oder das Backup vom /home-Verzeichnis starten.
  * Variable deklarieren: x=5000; echo $x sollte dann 5000 ergeben; Gilt nur f├╝r die aktuelle Shell;
  * Wenn eine Variable auch in anderen Shells verf├╝gbar sein soll, muss diese exportiert werden: export x
  * Alternative Vorgehensweise: Alles in einem Schritt erledigen ­čÖé export x=5000
  * Wenn der Inhalt einer Variable nicht mehr ben├Âtigt wird, sollte diese mit "unset" wieder zur├╝ck gesezt werden: unset x
  * Beliebte Variable in Pr├╝fungen: $HISTSIZE (definiert die Anzahl der Kommandos, die in der History aufbewahrt werden), wird meist in /etc/profile definiert.
  * Auch beliebt: $PS1 bestimmt das Aussehen der eingabeaufforderung, Bsp.: \u@\h:\w> (ergibt User@Host:<aktuelles Verzeichnis), sollte in /etc/bashrc definiert werden.
  * Ebenfalls beliebt: $?, enth├Ąlt den Errorlevel des zuletzt ausgef├╝hrten Kommandos (Return Value, Exit Level..), i.d.R. bedeutet 0 eine erfolgreiche Ausf├╝hrung der Applikation, w├Ąhrend andere Werte h├Ąufig f├╝r Fehler stehen. Beliebte Werte sind beispielsweise 1 und 127; 127 steht f├╝r "command not found" in der Bash
  * $1, $2 usw. enthalten i.d.R. Optionen und Agumente, die ├╝ber die Shell an ein Programm ├╝bergeben werden.
  * Die Shell-History wird in der Datei .bash_history abgelegt (im Home des jeweiligen Users).
  * Auf die letzten Aktionen kann man zugreifen, in dem man in der Shell die Pfeil-nach-oben-Taste dr├╝ckt oder !! eingibt. !! bewirkt die Ausf├╝hrung des letzten Befehls in der History.
  * history listet die letzten Befehle auf, mit !<Zahl> kann man dann darauf zugreifen.
  * !<string..> f├╝hrt den letzten Befehl aus, der mit <string..> beginnt.
  * !?<string..> f├╝hrt den letzten Befehl aus, in dem <string..> vorkommt.
  * Mehrere Befehle gleichzeitig ausf├╝hren: df -h; free -m
  * Kommandos k├Ânnen ├╝ber mehrere Zeilen verteilt werden, in dem ein Backslash vor den Zeilenumbruch gestellt wird: less \ [Enter] blabla; Achtung: Hinter dem Backslash darf kein Leerzeichen stehen.
  * ./<command>; "./" repr├Ąsentiert das aktuelle Verzeichnis.
  * echo $PATH ausf├╝hren, um sich die Pfade anzeigen zu lassen, in denen die Shell nach Tools sucht.
  * uname -r zeigt den aktuellen Kernel auf dem System, uname -a noch ein paar mehr Informationen.
  * Wenn "man <toolname>" aufgerufen wird, konsultiert das Tool die unter $MANPATH festgelegten Verzeichnisse und sucht nach der entsprechenden Manpage. Unter Fedora ist die Variable seltsamerweise leer. Sobald "man" die gew├╝nschte Manpage findet, wird diese dekomprimiert (die Pages liegen f├╝r gew├Âhnlich als gepacktes Archiv vor, um Platz zu sparen) und an einen Pager (wie less) ├╝bergeben.
  * Konfigurationsdatei: /etc/manpath.config (unter Fedora heisst die Config anders)
  * Das Programm "manpath" zeigt an, in welchen Verzeichnissen nach Manpages gesucht wird.
  * Beim Entpacken einer Manpage werden die Dateien h├Ąufig in /var/cache/man abgelegt. Dieses Verzeichnis wird, mit Hilfe des Cron-Daemons, zyklisch von catman bereinigt.
  * manpath -c zeigt die Cache-Verzeichnisse f├╝r "man" an.
  * Das Man-System ist in mehrere Sektionen unterteilt.
  * Sektion 1 vom Man-System zeigt ausf├╝hrbare Programme f├╝r Benutzer.
  * Sektion 2 vom Man-System zeigt Sytemaufrufe (Funktionen, die durch den Kernel unterst├╝tzt werden)
  * Sektion 3 vom Man-System zeigt Bibliotheksaufrufe (Libarys)
  * Sektion 4 vom Man-System zeigt besondere Dateien (meist aus /dev)
  * Sektion 5 vom Man-System zeigt Dateiformate und Konventionen.
  * Sektion 6 vom Man-System zeigt Spiele.
  * Sektion 7 vom Man-System gilt sonstigen Dingen ("Misc", e.g. Makro-Pakete, Konventionen).
  * Sektion 8 vom Man-System zeigt administrative Programme, die nur von root verwendet werden.
  * Sektion 9 vom Man-System gilt den Kernel-Routinen.
  * Sektion A vom Man-System enth├Ąlt mehrteilige Manpages.
  * Mit whatis und aproops kann man die Manpages durchsuchen.
  * whatis durchforstet die Namensfelder der Manpages.
  * apropos durchforstet die Namens- und Description-Felder der Manpages.
  * whereis zeigt an, wo sich ein Programm, seine Config-Files und die zugeh├Ârige(n) Manpage(s) befinden.
  * which zeigt den vollst├Ąndigen Pfad eines Programms an.















==== 103.2 - Textstr├Âme mit Filtern verarbeiten ====
  * cat (concatenate, also verketten)
  * cut
  * expand
  * fmt
  * head
  * od
  * join
  * nl
  * paste
  * pr
  * sed
  * sort
  * split
  * tail
  * tr
  * unexpand
  * uniq
  * wc
  * cat kann auch nicht sichtbare Zeichen ausgeben: cat -A <file>
  * tac gibt Files in umgekehrter Reihenfolge aus.
  * head zeigt die ersten 10 Zeilen eines Files, man kann auch mehrere Dateien gleichzeitig ausgeben lassen: head <file1> <file2>; mit dem Parameter "-n X" kann man die anzahl der auszugebenden Zeilen bestimmen, z. B. head -n 1 <file>
  * tail gibt per default die letzten 10 Zeilen einer Datei aus; Wichtigste Parameter: -n X, -f (f f├╝r "follow")
  * expand wandelt Tabs in Leerzeichen um; default: 8 Leerzeichen f├╝r einen Tabstop;
  * unexpand fasst Leerzeichen zu Tabs zusammen; arbeitet genauso wie expand;
  * fmt ist ein simples Textformatierungsprogramm; es entfernt automatisch Zeilenumbr├╝che und kann mehrere Texte zu einem einzigen Text zusammen fassen. Wichtigster Parameter: -w (width) (Breite des Textes in Zeichen)
  * nl steht f├╝r number lines und nummeriert Zeilen.
  * pr bereitet Dateien f├╝r den Druck vor. Bsp.: pr -h <file> (-h f├╝r "centered header")
  * wc z├Ąhlt die Anzahl der Zeilen, W├Ârter und Bytes in einer Datei. Ohne die Verwendung von Optionen werden diese Drei Eigenschaften in der genannten Reihenfolge angezeigt, also <lines> <words> <bytes> <filename>; die Verwendung von Wildcards ist m├Âglich, also z. B. wc *; wc -c zeigt nur die Anzahl der Bytes an, wc -l die Anzahl der Zeilen, wc -w die Anzahl der W├Ârter und wc -m die Anzahl der Zeichen. H├Ąufig ist die Anzahl der Bytes = die Anzahl der Zeichen...
  * hexdump zeigt Dateien hexadezimal, dezimal, im ASCII-Format oder als Oktal-Dump. hexdump /dev/sda |head -n 32 stellt nur die ersten 32 Zeilen (=512 Byte, 16 Byte pro Zeile) von /dev/sda und somit den MBR dar.
  * od (octal dump) ist ├Ąhnlich wie hexdump, besitzt nur einen kleineren Funktionsumfang. Mit -x kann die Ausgabe auf hexadezimal umgestellt werden.
  * Mit sort k├Ânnen Zeilen von Dateien sortiert werden. -n sortiert dabei nach numerischen Kriterien, -o sort f├╝r die Ausgabe in einer Datei, -r gibt das Ergebnis in umgekehrter Reihenfolge aus.
  * uniq kann doppelte Zeilen (sollten diese direkt aufeinander folgen) aus einer Datei tilgen. Liegen diese doppelten Zeilen nicht untereinander, kann man die Datei mit sort entsprechend vorbearbeiten.
  * split verteilt Dateien auf viele kleinere Teile. Bsp.: split -b 11m grosses-paket grosses-paket_ splittet die Datei "grosses-paket" in viele kleine Teile auf, die jeweils mit "grosses-paket_" tituliert werden. An den Unterstrich wird dann eine Nummerierung angef├╝gt. Die Option -b 11m bewirkt, dass split nicht in Zeilen, sondern in Byte denkt. Mit 11m legen wir die Gr├Â├če der einzelnen Teilpakete fest, also 11 MB. Das Zusammensetzen der Dateien ist dann z. B. mit cat m├Âglich: cat grosses-paket_a >grosses-paket;
  * cut, paste und join werden h├Ąufig miteinander kombiniert oder nacheinander angewendet.
  * cut schneidet Spalten aus Dateien aus. Bsp.: cut -d: -f2 <file>, wobei -d f├╝r den Delimiter (Trenner) und -f f├╝r Spalte steht (f f├╝r field). Die Ausgabe erfolgt auf dem Bildschirm (hier wird Spalte 2 ausgegeben und nicht etwa gel├Âscht).
  * Mit paste k├Ânnen Dateien zusammen gef├╝hrt werden, allerdings nenbeneinander und nicht untereinander.
  * join verkn├╝pftr Dateien (Achtung: Die Delimiter-Option heisst hier -t und nicht -f!), also z. B. join -t : j 1 <file1> <file2>, wobei hier mit -j der gemeinsame Nenner festgelegt wird.
  * tr (translate) ersetzt einzelne Zeichen in Dateien durch andere, z. B.: cat <datei> | tr n x; Achtung: An "tr" kann keine Datei als Parameter ├╝bergeben werden, hier muss man daher die Dateien durch Pipes als Textstr├Âme umleiten. Wichtige Optionen: -d f├╝r delete, -c f├╝r complement ("Ausgabe ins Gegenteil umkehren") und -s f├╝r squeee repeats ("Unterdr├╝ckung sich wiederholdender Zeichen"). Mit tr kann man beispielsweise auch alle Buchstaben in Gro├čbuchstaben umwandeln: cat <file> |tr a-z A-Z; Man kann also Ranges f├╝r den Substitude angeben. Alternative f├╝r dieses Beispiel: cat <file> |tr [:lower:] [:upper:]
==== 103.3 - Grundlegende Dateiverwaltung ====
  * cp
  * find
  * mkdir
  * mv
  * ls
  * rm
  * rmdir
  * touch
  * tar
  * cpio
  * dd
  * file
  * gzip
  * gunzip
  * bzip2
  * Dateisuchmuster
  * ls listet Dateien in Verzeichnissen auf, in alphabetischer Reihenfolge. -l gibt an, dass das Listingformat mit Zugriffsberechtigungen und Timestamps verwendet wird. -i kann nur verwendet werden, wenn -l angegeben wurde und zeigt die Inodes an. -a listet auch Dateien, die mit einem Punkt beginnen. -s zeigt in Kombination mit - die Gr├Â├če jeder Datei in Blocks an. -h bewirkt, dass die Dateigr├Â├čen im human readable Format angezeigt werden, ben├Âtigt -l.
  * cd wird zum Wechseln der Verzeichnisse verwendet.
  * pwd gibt das aktuelle working directory aus ("print working directory").
  * Die Tilde "~" wird Home-Verzeichnissen voran gestellt.
  * cp kopiert Dateien und Verzeichnisse. -i bewirkt, dass vor dem ├ťberschreiben von bereits existierenden Dateien bzw. Verzeichnissen nachgefragt wird. -f erzwingt den Schreibvorgang, w├Ąhrend -p die Beibehaltung des Eigent├╝mers, der Eigent├╝mergruppe sowie deren Berechtigungen und der Timestamps bewirkt. - i f├╝r --interactie, -p f├╝r --preserve. -R kopiert rekursiv, -a (--archive) bewirkt das gleiche wie -dR --preserve=all.
  * mv verschiebt Dateien und Verzeichnisse. Wenn sich das Ziel auf der gleichen Partition wie die Quelle befindet, so wird nichts verschoben - es werden jediglich die Eintr├Ąge im Quell- und Zielverzeichnis editiert, um der Verschiebung Rechnung zu tragen. Der Parameter -u erstellt eine Datei nur dann, wenn die bereits existierende Datei ├Ąlter ist als die zu verschiebende DAtei oder wenn die Zieldatei noch nicht existiert. -i fragt nach, ob bereits existierende Dateien ├╝berschrieben werden sollen, w├Ąhrend -f einen Schreibvorgang tats├Ąchlich erzwingt.
  * mkdir legt neue Ordner an. Mit -p (--parents) werden auch Verzeichnisse erstellt, wenn die angegebenen ├ťberordner noch nicht existieren - mkdir legt diese dann an. -m stellt gleich den --mode, also die Berechtigungen, f├╝r das neue Verzeihcnis ein, Bsp.: mkdir -m 700 Gedichte.
  * rm l├Âscht Dateien und Ordner. -r f├╝r rekrusiv, -i f├╝r interactive, -f f├╝r force (z. B. bei Fehlermeldungen).
  * rmdir entfernt leere Verzeichnisse. Mit -p werden auch dar├╝ber liegende Verzeichnisse gel├Âscht, wenn diese durch die L├Âschung des eigentlichen Ordners leer werden.
  * touch kann neue Dateien anlegen und den Timestamp von bereits existierenden Dateien ver├Ąndern. -t setzt den Timestamp auf den gew├╝nschten Wert, w├Ąhrend -a nur die access time und -m nur die modify time ver├Ąndern.
  * find sucht nach Dateien in einer Verzeichnisstruktur. Bsp.: find / -name <filename>.
  * Wildcards werden durch die Shell interpretiert! * ersetzt null oder mehr Zeichen, ? genau eines und [!a-z] ersetzt ein einzelnes Zeichen, welches nicht angegeben ist. find / -name *.log findet alle Log-Dateien auf einem System.
  * tr (tape archiver) wurde urspr├╝nglich entwickelt, um Dateien zu einem Archiv zusammenzufassen und dieses Archiv dann auf einem Bandlaufwerk zu sichern. Optionen k├Ânnen ├╝brigens mit und ohne Strich ├╝bergeben werden, also z. B. tar -xvzf <file> oder tar xfvz <file>. -x f├╝r extract (entpacken), -z f├╝r gzip bzw. gunzip, -v f├╝r verbose, -c f├╝r create new archive, -t f├╝r listet Inhalt eines Archivs als Tabelle auf, -j f├╝r bzip2 bzw. bunzip2 und -f f├╝r file (Ein- und Ausgabe sind somit eine Datei und nicht /dev/rmt0).
  * Beispiel: Mit bzip2 komprimiertes Archiv der Konfigurationsdateien eines Linux-Systems erzeugen: tar -cvjf backup.tar.bz2 /etc/*
  * Beispiel: tar -tvjf bbackup.tar.bzw |less zeigt den Inhalt eines Archivs an.
  * Beispiel: tar -xvjf backup.tar.bz2 entpackt das Archiv wieder.
  * Also: -t f├╝r table, -c f├╝r create, -x f├╝r entpacken und -j f├╝r bzip2! -z steht f├╝r gzip!
  * gzip komprimiert Dateien. Mit -c bleibt die Originaldatei erhalten. gzip -l listet den Inhalt eines Archivs auf.
  * gunzip entpackt gzip-Archive.
  * bunzip2 entpackt bzip2-Archive.
  * cpio wird verwendet, um Dateien in Archive hinein oder aus Archiven heraus zu kopieren. cpio -i | --extract aktiviert den Copy-in-Modus. In diesem Modus werden Dateien aus einem Archiv in das Dateisystem kopiert. Das -i sollte daher aus Sicht des Dateisystems gesehen werden... cpio -o | --create steht f├╝r das Gegenteil von -i und wird als Copy-out-Modus bezeichnet. Es werden also diesmal Dateien aus dem Filesystem in das Archiv kopiert bzw. zun├Ąchst ein Archiv erstellt (create). Mit cpio -p |--pass-through wechselt man in einen besonderen Modus: hier werden zu kopierende Dateien vom default Input-Kanal eingelesen und anschlie├čend in ein per Argument angegebenes Verzeichnis kopiert.
  * Z. B. mit cpio ein Backup von .ods-Dokumenten anlegen lassen: find /home -name *.ods |cpio -pd /backup
  * dd kopiert "Daten". Z. B. dd if=/dev/sda of=/dev/sdb; if=input file, of=output file; Den MBR mit dd betrachten: dd if=/dev/sda bs=512 count=1;
  * file zeigt den Dateityp einer Datei an. z. B. file /bin/bash;
==== 103.4 - Str├Âme, Pipes und Umleitungen verwenden ====
  * tee
  * Pipes
  * Redirect
  * Dateideskriptoren (Standard-I/Os)
  * Standardeingabekanal stdin (f├╝r gew├Âhnlich die Tastatur), entspricht Dateideskriptor 0
  * Standardausgabekanal stdout (f├╝r gew├Âhnlich ein Terminal), entspricht Dateideskriptor 1
  * Standardfehlerkanal stderr (├Ąhnelt vom Verhalten her stdout, enth├Ąlt aber nur Fehlermeldungen), entspricht Dateideskriptor 2
  * Redirects werden verwendet, um die Standard-I/Os entweder in eine Datei hinein oder aus einer Datei heraus umzulenken. Bsp.: grep kernel /var/log/messages > kernelmessages (siehe Zeichen ">")
  * Bsp.: script 2>fehler.log 1>erfolg.log loggt die Fehler in einer Datei, und den gew├Âhnlichen Output in einer anderen Datei mit
  * Bsp.: script >logfile 2>&amp;1 loggt Fehler und normale Meldungen mit. 2>&amp;1 leitet stderr auf stdout um. Das &amp; besagt, dass 1 keine Datei ist. Das Kommando w├╝rde ohne das &amp; stderr in die Datei 1 umleiten.
  * >> h├Ąngt Daten an eine Datei an, also z. B. grep kernel /var/log/messages >> kernelmessages
  * > ist ein Redirector, >> sind zwei Redirectoren...
  * Achtung: Wenn die Zieldatei bereits existiert und man nur einen Redirector verwendet, so wird die Zieldatei gel├Âscht und mit neuem Inhalt gef├╝llt.
  * Bsp. f├╝r das Umleiten des Standardeingabekanals: mail -s "├ťberpr├╝fen!" willi < /var/log/messages (leitet den Inhalt von messages nach mail weiter)
  * Bsp. f├╝r das Umlenken von stdout: command > target (├╝berschreibend)
  * Bsp. f├╝r das Umlenken von stdout: command 1> target (├╝berschreibend)
  * Bsp. f├╝r das Umlenken von stdout: command >> target (append)
  * Bsp. f├╝r das Umlenken von stdout: command 1>> target (append)
  * Bsp. f├╝r das Umlenken von stderr: command 2> target (├╝berschreibend)
  * Bsp. f├╝r das Umlenken von stderr: command 2>> target (append)
  * Bsp. f├╝r das Umlenken von stderr und stdout: command > target 2>&amp;1 (gemeinsame Zieldatei)
  * Bsp. f├╝r das Umlenken von stderr und stdout: command 1> targetA 2> targetB (getrennte Zieldateien)
  * Bsp. f├╝r das Umlenken von stdin: command < source
  * Bsp. f├╝r eine Pipe: grep "kernel" /var/log/messages |less (das | ist die Pipe)
  * tee kann den Datenstrom eines Programms gleichzeitig auf der Konsole und in einer Textdatei ausgeben.
  * Bsp. f├╝r tee: grep pppd /var/log/messages |tee pppdmessages
  * xargs kann Ergebnisse eines Programms, welches eine mehrzeilige Ausgabe liefert, die Zeilen einzeln an eine andere Applikation ├╝bergeben, die immer nur ein Argument gleichzeitig verarbeiten kann.
  * Bsp. f├╝r xargs: cut -d " " -f1 /var/log/apache2/access_log |sort | uniq |xargs -n1 host isoliert zun├Ąchst die erste Spalte des access_logs (enth├Ąlt IPs der Besucher), sort sortiert die IPs der Besucher und uniq sorgt daf├╝r, dass jede IP nur einmal auftaucht. xargs ├╝bergibt dann jede IP einzeln an das Kommando host. host wird also f├╝r jede IP einzeln aufgerufen.
==== 103.5 - Prozesse erzeugen, ├╝berwachen und beenden ====
  * &amp;
  * bg
  * fg
  * jobs
  * kill
  * nohup
  * ps
  * top
  * free
  * uptime
  * killall
  * Jedes Programm, welches auf einem Computer l├Ąuft, besteht aus mindestens einem Prozess.
  * Prozesse sind in einer Baumhierarchie angeordnet und die Wurzel dieses Baumes ist der Prozess init.
  * Wenn der kernel beim Systemstart alle seine Module initialisiert hat, ├╝bergibt er die Kontrolle an den Prozess init.
  * Jedem Prozess wird eine eindeutige ID zugeordnet, die PID (Prozess-ID).
  * init hat immer die PID 1. Die PID 0 gibt es nicht.
  * init ist der erste Prozess, der auf einem System langfristig gestartet wird und der letzte Prozess, der beim Herunterfahren des Systems stirbt.
  * ps zeigt die aktuell auf dem System laufenden Prozesse an.
  * ps a zeigt auch die Prozesse anderer User an. Voraussetzung ist, dass diese Prozesse mit einem Terminal verkn├╝pft sind.
  * ps u zeigt auch die Startzeit, den Pfad zur ausf├╝hrenden Datei und den ausf├╝hrenden Benutzer an.
  * ps x f├╝hrt auch die Prozesse auf, die nicht mit einem Terminal verbunden sind (z. B. init oder cron).
  * ps -C <prozess> sorgt f├╝r die Ausgabe aller Instanzen eines in der Shell angegebenen Prozesses.
  * ps -U <user> zeigt die Prozesse eines bestimmten Users an.
  * ps aux ist eine beliebte Kombination. Damit werden s├Ąmtliche Prozesse aller User angezeigt.
  * pstree zeigt die Prozesse in ihrer Hierarchie an.
  * pstree -a zeigt zus├Ątzlich die Optionen und Argumente an, die einem Prozess an der Kommandozeile ├╝bergeben wurden.
  * pstree -G hat eine Ausgabe im VT100-Modus zur Folge. F├╝hrt h├Ąufig zu einer optisch ansprechenderen Ausgabe.
  * pstree -p zeigt zus├Ątzlich die PIDs an.
  * pstree -n sorgt f├╝r eine Sortierung nach PIDs. Im Normalfall erfolgt die Sortierung alphabetisch.
  * Mein pers├Ânlicher Favorit: pstree -Ahapnul
  * top zeigt die laufenden Prozesse in Echtzeit an. Dazu kommen noch Informationen wie Uhrzeit, Uptime, Anzahl der angemeldeten User, die durchschnittliche Systemauslastung, Tasks (Anzahl der Prozesse insgesamt, laufende Prozesse, schlafende Prozesse, gestoppte Prozesse und Zombie-Prozesse), CPU(s) (Benutzung durch Benutzerprozesse, Systemprozesse, IDLE-Prozess), MEM (Speicher insgesamt, in Verwendung, freier Speicher und f├╝r Buffer verwendeter Speicher) sowie den SWAP (diverse Werte zur Verwendung der SWAP-Partition(en).
  * Im Interaktivmodus von top t├Âtet "k" einen Prozess. Dabei m├╝ssen sowohl die PID als auch das Signal angegeben werden.
  * Im Interaktivmodus von top regelt "n" die Anzahl der auszugebenden Zeilen.
  * Im Interaktivmodus von top regelt "r" den Nice-Wert eines Prozesses zur Laufzeit.
  * Im Interaktivmodus von top gibt "h" die Hilfe aus.
  * Im Interaktivmodus von top erwirkt "q" das Beenden von top.
  * Im Interaktivmodus von top erwirkt "t" die Verwendung von Farben in der Darstellung.
  * top -i zeigt nur die Prozesse an, die aktiv sind. Schlafende Prozesse werden ignoriert.
  * top -b (batch) kann in Kombination mit einem Redirektor verwendet werden, um die Ausgabe in eine Textdatei umzuleiten.
  * top -d (delay) gibt das Aktualisierungsintervall in Sekunden an. Der Standardwert ist eine Sekunde.
  * top -q startet top mit Echtzeitausgabe. Die Aktualisierung wird sehr hochfrequent, was zu einem instabilen System f├╝hren kann. Diese Option habe ich im ├ťbrigen weder unter Ubuntu, noch unter Fedora gefunden.
  * Man kann Signale an Prozesse senden. Es gibt insgesamt 64 von Ihnen. kill -l zeigt eine Liste an zur Verf├╝gung stehenden Signalen.
  * Ein wichtiges Signal ist 1 bzw. SIGHUP. Was fr├╝her ein Modem zum Auflegen veranlasste, bewirkt heute bei z. B. Daemons (wie bind, Squid..) zu reloaden und dabei die Konfiguration neu einzulesen.
  * Ein wichtiges Signal lautet 9 bzw. SIGKILL und beendet einen Prozess mit Gewalt. Sollte nur im Notfall verwendet werden. Ein mit SIGKILL beendeter Prozess r├Ąumt keine tempor├Ąren Dateien usw. auf.
  * Ein weiteres wichtiges Signal lautet 15 bzw. SIGTERM. SIGTERM fordert einen Prozess auf, sich selbst zu beenden. Der Prozess erh├Ąlt die Gelegenheit Aufr├Ąumaktionen auszuf├╝hren.
  * 2 bzw. SIGINT f├╝hrt einen Programmabbruch aus. Wird gesendet, wenn beispielsweise [Strg] + [c] best├Ątigt wird.
  * 18 bzw. SIGCONT setzt einen Prozess fort, der zuvir mit SIGSTOP angehalten wurde. Das Signal SIGCONT wird durch die Kommandos fg und bg gesendet.
  * 19 bzw. SIGSTOP h├Ąlt einen Prozess an. Der Prozess kann sp├Ąter mit SIGCONT fortgesetzt werden.
  * 20 bzw. SIGTSTP h├Ąlt einen Prozess an. Der Prozess bleibt speicherresident und kann mit SIGCONT fortgesetzt werden. Die Tastenkombination [Strg] + [z] sendet dieses Signal.
  * Mit kill k├Ânnen alle 64 Signale an einen Prozess gesendet werden. kill ist prim├Ąr dazu gedacht Programme zu beenden.
  * kill ohne Signal sendet per default SIGTERM (15) raus.
  * Wenn man mit kill einen SIGTERM (15) an eine PID senden m├Âchte, existieren hierf├╝r 11 verschiedene Varianten:
  * kill <PID>
  * kill -s 15 <PID>
  * kill -s SIGTERM <PID>
  * kill -s TERM <PID>
  * kill -s sigterm <PID>
  * kill -s term <PID>
  * kill -15 <PID>
  * kill -SIGTERM <PID>
  * kill -TERM <PID>
  * kill -sigterm <PID>
  * kill -term <PID>
  * Prozesse, die darauf nicht reagieren, m├╝ssen dann gekillt werden: kill -SIGKILL 3167
  * Bsp. aus den Pr├╝fungen: kill -SIGHUP `cat /var/run/dhcpd.pid`; Hier wird mit Hilfe von cat die PID des dhcpds festgestellt. Die Backquotes sorgen daf├╝r, dass das Ergebnis dieses Kommandos an kill -SIGHUP angeh├Ąngt wird. Eine andere Variante lautet: kill -SIGHUP $(cat /var/run/dhcpd.pid)
  * killall verwendet im Gegensatz zu kill keine PIDs, sondern Prozessnahmen. Somit muss man also keine PID ermitteln und kann mit nur einem Befehl alle Prozesse mit dem gleichen Namen abschiessen. Bsp.: killall -s 9 mc
  * In einer Shell k├Ânnen beliebig viele Benutzerprozesse (Jobs) gleichzeitig laufen. Programme, die in den Hintergrund transferiert wurden, k├Ânnen den Status "running" oder "stopped" besitzen.
  * Bsp.: Prozess starten und dann mit [Strg] + [z] in den Hintergrund schicken. Hier wird das Signal SIGTSTP (20) an den Prozess gesendet.
  * Einen Prozess kann man in den Hintergrund senden, so dass dieser weiter arbeitet und man gleichzeitig auf der Shell arbeiten kann. Einfach ein "&amp;" anh├Ąngen, z. B.: updatedb &amp;
  * Mit jobs kann man sich anzeigen lassen, welche Prozesse der aktuellen Shell derzeit laufen (z. B. im Hintergrund).
  * jobs -l zeigt auch die PIDs der jeweiligen Prozesse.
  * bg <Job-Nummer> sendet ein SIGCONT (18) an den Prozess, so dass dieser im Hintergrund weiter l├Ąuft. Der Prozess muss vorher gestoppt gewesen sein.
  * fg <Job-Nummber> holt den Prozess wieder in den Vordergrund (SIGCONT, 18).
  * nohup <command> startet den angegebenen Befehl und macht den daraus resultierenden Prozess immun gegen Signale wie SIGHUB. Zus├Ątzlich wird stdout in eine Datei umgeleitet (meist nohup.out im Home-Dir). Nach einem logout l├Ąuft der Job dann sogar ohne Shell weiter.
  * uptime gibt die Uptime, Anzahl der Benutzer sowie die durchschnittliche Anzahl von lauff├Ąhigen Jobs in den vergangenen 1, 5 und 15 Minuten aus.
  * w f├Ârdert eine ├Ąhnliche Ausgabe zu Tage.
  * free zeigt die derzeitige Speicherauslastung eines Systems an.
  * free -b -> Ausgabe in Bytes.
  * free -k -> Ausgabe in KB.
  * free -m -> Ausgabe in MB.
  * free -g -> Ausgabe in G.
  * free -l -> Details aus High- und Low-Memory anzeigen.
  * free -o -> Altes Format f├╝r die Darstellung verwenden.
  * free -t -> Summen f├╝r RAM und SWAP.
  * free -s n -> Refreshing-Intervall.
  * free -s n -c n -> Wie oft soll aktualisiert werden?
  * free -V -> Zeigt die Version an.
==== 103.6 - Prozess-Ausf├╝hrungspriorit├Ąt ├Ąndern ====
  * nice
  * ps
  * renice
  * top
  * Manchmal muss man Prozesse mit anderen Priorit├Ąten laufen lassen. 
  * Mit "nice" kann man den Nice-Wert eines Programms schon beim Start festlegen. Ein Aufruf ohne Angabe eines Nice-Levels l├Ąsst den Prozess gleich 10 Mal "netter" ausf├╝hren.
  * Die Nice-Range reicht von -20 bis +19.
  * Wenn der Wert negativ ist, wird dem Programm eine h├Âhere Priorit├Ąt zugeordnet.
  * Der Nice-Wert und die Prozesspriorit├Ąt sind nicht dasselbe. Mit dem "Nicen" von Prozessen kann man lediglich Einfluss auf die Prozesspriorit├Ąt aus├╝ben.
  * Bsp.: nice -n 12 nano oder nice -12 nano startet nano mit einem positiven Nice-Wert von 12.
  * Bsp.: nice -n -15 pico oder nice --15 pico startet pico mit dem Nice-Wert von -15.
  * renice l├Ąsst zu, dass man noch w├Ąhrend der Laufzeit Einfluss auf die Prozesspriorit├Ąt aus├╝bt (alternativ k├Ânnen auch top bq. htop verwendet werden).
  * Bsp.: renice -10 <PID>
  * Bsp.: renice 5 -u <user> beeinflusst alle Prozesse eines Users.
  * Mit top (bzw. htop) und ps kann man sich die aktuellen Priorit├Ąten anzeigen lassen (in ps nach SN+ oder S<+ .. etc. suchen).
  * Im oberen Beispiel steht das N f├╝r einen genicten Prozess, das S f├╝r interruptible sleep und das + f├╝r "wird im Vordergrund ausgef├╝hrt". Das < ist ein Indikator daf├╝r, dass der Prozess mit erh├Âhter Priorit├Ąt ausgef├╝hrt wird.
  * Mit top sieht man das Nice-Level eindeutig.
  * Standardwerte: 16 f├╝r Prozesspriorit├Ąt (wird vom System verwaltet), 0 f├╝r den Nice-Wert.
==== 103.7 - Textdateien mit regul├Ąren Ausdr├╝cken durchsuchen VALENTIN LESEZEICHEN ====
  * grep
  * egrep
  * fgrep
  * sed
  * regex, regular expressions, regexp
  * Ein regul├Ąrer Ausdruck kann als eine Art Beschreibungssprache verstanden werden.
  * Regul├Ąre Ausdr├╝cke werden nicht von allen Programmen gleich interpretiert!
  * F├╝r die Pr├╝fung relevante Tools: grep, sed, vi(m)
  * Metazeichen ^ = Textanker f├╝r den Zeilenanfang
  * Metazeichen $ = Textanker f├╝r das Zeilenende
  * Metazeichen \< markiert einen Wortanfang
  * Metazeichen \> markiert ein Wortende
  * Metazeichen \ "escaped" ein Zeichen
  * Metazeichen [...] = Der Ausdruck passt auf die in den eckigen Klammern enthaltenden Zeichen. [abc] trifft also zu, wenn ein Ausdruck a, b oder c enth├Ąlt. Man kann hier auch [a-c] schreiben.
  * Metazeichen[^...] = Der Ausdruck trifft nicht auf "..." zu. Nicht mit dem Metazeichen ^ verwechseln, wenn es alleine steht┬░
  * Beispiel: ^[^#] erzielt einen Treffer, wenn am Zeilenanfang keine Raute steht.
  * Wildcard * bezeichnet beliebig null oder beliebig viele Wiederholungen des voranstehenden Zeichens.
  * Wildcard ? bezeichnet null oder die einmalige Wiederholung des voranstehenden Zeichens. Urspr├╝nglich wurde dieses Zeichen von sed und grep nicht unterst├╝tzt, weshalb viele hier zu egrep griffen.
  * Wildcard + bezeichnet das zumindest einmalige Vorkommen des voranstehenen Zeichens.
  * Wildcard . kann als Platzhalter f├╝r ein beliebiges Zeichen (au├čer Zeilenvorschub) verwendet werden.
  * Achtung: In der Shell ersetzt der Stern mehrere beliebige Zeichen und das Fragezeichen ein beliebiges Zeichen. Hier besteht also Verwechslungsgefahr.
  * grep durchsucht Zeilen einer Datei nach regul├Ąren Ausdr├╝cken.
  * grep = search Globally for Regular Expressions and print out
  * grep -v invertiert die Ausgabe. Es werden also Zeilen ausgegeben, auf die der angegebene regul├Ąre Ausdruck nicht zutrifft. Kein Verbose-Mode.
  * grep -n f├╝gt dem Suchergebnis eine Zeilennummerierung hinzu.
  * grep -E aktiviert die Verwendung von extenden regex. Das Tool verh├Ąlt sich dann wie egrep.
  * grep -c z├Ąhlt die Anzahl der ├ťbereinstimmungen mit dem Suchmuster.
  * grep -i ignoriert die Gro├č- und Kleinschreibung.
  * Bsp.: grep [Ww]ill[iy] <file> durchforstet <file> nach Willi, Willy, willi und willy. Ein ├Ąhnliches Ergebnis liefert ├╝brigens auch grep -i will[iy].
  * Bsp.: Nur Zeilen ausgeben, die mit einer Route beginnen (= auskommentierte Zeilen): grep [#] <filename>
  * Bsp.: Keine Zeilen mit Raute ausgeben: grep -v [#] <file> oder auch grep [^#] <file>
  * Bsp.: Ignoriere Zeilen, die mit einer Route beginnen: grep -v ^[#] <file> oder auch grep ^[^#] <file>
  * Bsp.: grep -v ^[#] /etc/config.conf |grep -v ^$ macht das gleiche wie oben UND ignoriert zus├Ątzlich Leerzeilen. Der Regex ^$ erkennt Zeilen, in denen der Start und das Ende der Zeile direkt aufeinander folgen - dies muss eine Leerzeile sein.
  * Bsp.: grep '1\{3,5\}' <file> zeigt alle Zeilen, die drei, vier oder f├╝nf aufeinander folgende Einsen enthalten.
  * Bsp.: grep '1\{3,\}' <file> sucht alle Zeilen, die mindestens drei aufeinander folgende Einsen enthalten. Nach oben ist kein Limit gesetzt.
  * Bsp.: grep '[0-9]\{3\}' <file> zeigt alle Zeilen, in denen drei aufeinander Folgende Ziffern vorkommen.
  * Die geschweiften Klammern und eine Zahl darin geben also an, wie h├Ąufig sich etwas wiederholen darf: \{3,\}
  * Die Metazeichen ?, +, {, }, |, ( und ) m├╝ssen immer escaped werden. Ansonsten sind diese Teil des Suchstrings.
  * Bsp.: Nach mindestens 3-stelligen Dollarbetr├Ągen suchen: grep '\$ [0-9]\{3,\}\>' <file>
  * Bsp.: Suchen nach /var/log: grep '\/var\/log\/' <file>
  * Bsp.: Unter Windows nach c:\windows\system32 suchen: grep 'c:\\windows\\system32\\' <file>
  * Bsp.: Nach Zeilen suchen, die mindestens einen Gro├čbuchstaben enthalten: grep '[A-Z]\+' <file>
  * egrep (extended grep) und fgrep (fixed grep) waren urspr├╝nglich Varianten von grep mit zus├Ątzlichen F├Ąhigkeiten. Beide sind heutzutage nicht mehr notwendig, da grep nun entsprechende erweiterte Optionen bietet.
  * grep -E = egrep
  * grep -F = fgrep
  * agrep f├╝hrt fehlertolerantes Suchen durch, w├Ąhrend zgrep f├╝r Suchen in komprimierten Archiven gedacht ist.
  * sed ist ein Stream-Editor.
  * sed bietet Optionen und Kommandos, wobei die Optionen allerdings meist eine eher untergeordnete Rolle spielen.
  * Wenn keine Optionen angegeben werden, kann sed allerdings auch nur ein Kommando mit einer einzigen Befehlszeile entgegen nehmen.
  * sed -e <command> - Optional, wenn nur ein Kommando verwendet wird. Wenn mehrere Kommandos in einer Befehlszeile verwendet werden sollen, muss diese Option jedem Kommando voran gestellt werden.
  * sed -f <script> - Gibt ein Script an, welches Kommandos f├╝r sed enth├Ąlt.
  * sed -g - Alle folgenden Kommandos gelten als global. Ansonsten reagiert sed nur auf das erste vorkommnis eines Suchmusters innerhalb einer Zeile.
  * Per default bearbeitet sed alle Zeilen der angegebenen Datei(en). Wenn dieses Verhalten nicht erw├╝nscht ist, kann man sed die Koordinaten f├╝r Beginn und Ende der Arbeiten nennen. Es k├Ânnen dabei eine, zwei oder gar keine Adressen verwendet werden.
  * Es existieren drei Arten von Adressen f├╝r sed: Zeilennummern, Dollarzeichen (f├╝r die letzte Zeile) und regul├Ąre Ausdr├╝cke (der auf beiden Seiten durch Slashes begrenzt wird, z. B. /regex/).
  * Wenn sed eine Datei vollst├Ąndig verarbeiten soll, dann gibt man gar keine Adresse ein.
  * Kommandos k├Ânnen in zwei Varianten an sed ├╝bergeben werden. Entweder direkt in der Shell oder aber via Script.
  * Kommando y: Wird f├╝r die ├ťbersetzungen von einem Zeichen in ein anderes Zeichen verwendet. Achtung: Beim Austausch von Zeichen in einer Zeile muss das Verh├Ąltnis 1:1 gegeben sein. Soll heissen: Ein Zeichen ersetzt ein anderes, zwei Zeichen ersetzten zwei andere, drei Zeichen.. usw.
  * Bsp.: Austausch von Komma durch Semikolon: sed 'y/,/;/' file1 > file2
  * Das Kommando "d" l├Âscht ganze Zeilen, wenn ein regul├Ąrer Ausdruck zutrifft oder Zeilen mit Adressen angegeben wurden.
  * Bsp.: sed -e '/^$/d' -e '/^#/d' <file>
  * Im obrigen Beispiel bewirkt der voranstehende Befehl das L├Âschen von Kommentar- und Leerzeilen in einer Datei. ^$ = Leerzeile, ^# = Zeile beginnt mit einer Raute. 
  * Bsp.: sed '25,47d' file1 > file2 l├Âscht adressenbasiert Zeilen.
  * Bsp.: sed '25,47d!' file > file 2 invertiert den Vorgang, soll heissen alles au├čer Zeilen 25-47 wird gel├Âscht.
  * Das Kommando "s" kann Zeichen ├╝bersetzen. Im Vergleich zu "y" ist es m├Ąchtiger, da auch mehrere Zeichen in ein einziges Zeichen ├╝berf├╝hrt werden k├Ânnen (und umgekehrt). Das Verh├Ąltnis 1:1 ist hier also gebrochen.
  * Beispiel: sed 's/ue/├╝/' <file> ersetzt in jeder Zeile das erste ue durch ein ├╝.
  * Der obrige Befehl kann durch "g" globalisiert werden. Somit wird jedes vorkommende ue (also auch alle in einer Zeile) durch ein ├╝ ersetzt.
  * Bsp. zur Erkl├Ąrung, die sich eine Zeile h├Âher befindet: sed 's/ue/├╝/g' <file>
  * Beispiele f├╝r ein sed-Script:
<code>
archangel:~ # cat sed-umltohtml-script
s/├Ą/\&amp;auml\;/g;
s/Ä/\&amp;Auml\;/g;
s/├╝/\&amp;uuml\;/g;
s/U/\&amp;Uuml\;/g;
s/├Â/\&amp;ouml\;/g;
s/├ľ/\&amp;Ouml\;/g;
s/├č/\&amp;szlig\;/g;
</code>
sed -f <script> file 1 > file2

Achtung: Wenn ich im sed-Script Adressen angebe, muss ich ber├╝cksichtigen, dass sich die Zeilennummerierungen w├Ąhrend der Ausf├╝hrung des Scripts ├Ąndern k├Ânnen. Wenn also beispielsweise die erste Zeile in einem sed-Script Zeilen aus einem Text-Stream entfernen und Zeile zwei im Script Zeile 1 adressiert, so k├Ânnte der zweite Befehl aus dem Script versehentlich die falsche Zeile modifizieren. Bei der Adressierung von Zeilen ist also Vorsicht geboten!
==== 103.8 - Grundlegendes Editieren von Dateien mit vi ====
  * vi
  * h,j,k,l
  * i,o,a
  * c,d,p,y,dd,yy
  * ZZ, :w!, :q!, :e!
  * vi
  * /, ?
  * vi ist der Nachfolger von ed.
  * Derivate von vi: vim, elvis, vile usw.
  * Mehrere Dokumente in den vi laden: vi <file1> <file2>
  * Mit :n (vorw├Ąrts) und :N (r├╝ckw├Ąrts) kann man dann zwischen den einzelnen Dokumenten wechseln.
  * Kommandomodus (Speichern, im Text fortbewegen, Zwischenablage, L├Âschen, Suchen, aber KEIN Editieren), direkt nach dem Start vom vi
  * Einf├╝gemodus (i oder a dr├╝cken)
  * i wechselt vor der aktuellen Cursorposition in den Einf├╝gemodus, I wechselt am Anfang der aktuellen Zeile in den Einf├╝gemodus, a wechselt hinter der aktuellen Cursorposition in den Einf├╝gemodus und A wechselt am Ende der aktuellen Zeile in den Einf├╝gemodus.
  * Mit [Esc] gelangt man vom Eingabe- zur├╝ck in den Kommandomodus.
  * Im Kommandomodus kann man abspeichern. Bsp.:    :w <filename>
  * :w! speichert nach M├Âglichkeit auch dann, wenn die Datei schreibgesch├╝tzt ist.
  * :wq speichert und beendet vi
  * ­čśí speichert und beendet den Editor
  * ZZ speichert und beendet den vi
  * :q beendet den Editor. Bearbeitete Dateien m├╝ssen zuvor abgespeichert worden sein.
  * :q! beendet den vi ohne zu speichern, falls eine Änderung vorliegt.
  * :e <filename> ├Âffnet die angegebene Datei. Die aktuelle Datei wird geschlossen. Die urspr├╝ngliche Datei muss vorher gespeichert werden.
  * Der vi kann NICHT mit [Strg] + [c] beendet werden.
  * Bewegung im Kommandomodus: h = ein Zeichen nach links
  * j = ein Zeichen nach unten
  * k = ein Zeichen nach oben
  * l = ein Zeichen nach rechts
  * G = Ende der Datei
  * H = oberer Bildschirmrand
  * L = unterer Bildschirmrand
  * Durch das Voranstellen von Zahlen kann eine Bewegung gleich mehrmals statt finden, . B. 20j bewegt den Kursor um 20 Zeilen nach unten.
  * Bsp.: Bewegen Sie den Cursor um drei Zeilen nach oben und um vier Zeichen nach rechts = 3k4l; Der vi f├╝hrt diese Kommandos dann allerdings getrennt aus.
  * yy (yank) kopiert den Inhalt der aktuellen Zeile in die Zwischenablage
  * p (paste) f├╝gt den Inhalt der Zwischenablage unterhalb der aktuellen Zeile ein
  * P (Paste) f├╝gt den Inhalt der Zwischenablage oberhalb der aktuellen Zeile ein
  * dd (delete) l├Âscht die aktuelle Zeile
  * D (Delete) l├Âscht den Text hinter dem Cursor bis zum Ende der Zeile
  * cc (cut copy) schneidet die vollst├Ąndige aktuelle Zeile aus und kopiert diese in die Zwischenablage. Anschlie├čend wechselt vi automatisch in den Einf├╝gemodus.
  * C (Cut) schneidet den Text hinter dem Cursor bis zum Ende der Zeile aus und kopiert den Krams in die Zwischenablage. Anschlie├čend wechselt vi automatisch in den Einf├╝gemodus.
  * o generiert eine neue Zeile unterhalb der aktuellen und wechselt automatisch in den Einf├╝gemodus.
  * O generiert eine neue Zeile oberhalb der aktuellen und wechselt automatisch in den Einf├╝gemodus.
  * /regex sucht nach der Zeichenkette regex.
  * / sucht nach dem n├Ąchsten Vorkommen der Zeickenkette regex.
  * ? sucht r├╝ckw├Ąrts nach dem Vorherigen Vorkommen der Zeickenkette regex.
  * :!kommando f├╝hrt das Script mit der Bezeichnung "kommando" aus. Der Editor bleibt hierbei weiterhin ge├Âffnet.
  * Wenn ein Kommando gleich mehrfach ausgef├╝hrt werden soll, so stellt man einfach einen numerischen Wert voran.
  * Bsp.: 17dd l├Âscht 17 Zeilen (aktuelle + die kommenden 16 St├╝ck)
  * Bsp.: 54yy kopiert 54 Zeilen in die Zwischenablage
  * 12cc schneidet die aktuelle und folgenden 11 Zeilen aus
  * vi kann mit anf├Ąnglichen Bedingungen gestartet werden, z.B. mit einer festgelegten Zeile.
  * Bsp.: vi <file> +65
  * Bsp.: vi <file> +/Pinguin l├Ąsst den vi direkt nach dem ├ľffnen von <file> zum ersten Suchergebnis f├╝r Pinguin springen.
  * Diese Befehlszeilenoptionen wurden vom Vorg├Ąnger "ex" ├╝bernommen.
===== 104 - Ger├Ąte, Linux-Dateisysteme, Filesystem Hierarchy Standard =====
==== 104.1 - Partitionen und Dateisysteme anlegen ====
  * fdisk
  * cfdisk als men├╝gef├╝hrte Applikation, hier nicht relevant
  * mkfs
  * mkfswap
  * mkfs kann u.a. ext2, ext3, xfs, reiserfs v3 und vfat - Dateisysteme anlegen.
  * Partitionierung aktueller Festplatte ansehen: z.B. via fdisk /dev/sda -l
  * cat /proc/partitions
  * Festplatte mit fdisk partitionieren: fdisk <platte> und dann "n" f├╝r new. Interaktiv, ├Ąhnlich wie parted. Mit "w" schlie├čt man den Vorgang ab (vermutlich "w" f├╝r "write").
  * Alle verf├╝gbaren Optionen von fdisk anzeigen lassen: fdisk eingeben und "m" (f├╝r "menu") dr├╝cken.
  * fdisk -> m -> a: (activate) legt aktive Partitionen fest, wird als Flag vom BIOS ausgewertet und f├╝r Betriebssysteme ben├Âtigt, die ├╝ber kein Startprogramm im MBR verf├╝gen.
  * d (delete) l├Âscht eine Partition
  * l (list) zeigt alle von fdisk unterst├╝tzten Dateisysteme an
  * m (men) zeigt das Men├╝ an.
  * n (new) erstellt eine neue Partition.
  * p (print) zeigt die aktuelle Partitionstabelle an.
  * q (quit) verwirft alle Änderungen und beendet fdisk.
  * t (type) ├Ąndert den Dateisystemtyp einer Partition.
  * u (units) ├Ąndert die Einheit
  * v (verify) ├╝berpr├╝ft die Partitionstabelle
  * w (write) schreibt alle Änderungen in die Partitionstabelle.
  * x (extra) ergibt ein zus├Ątzliches Men├╝ mit Hardware-nahen Optionen.
  * Typ 83 = Dateisystem vom Typ Linux
  * Typ 82 = Dateisystem vom Typ Swap
  * Typ 7 = HPFS/Windows NTFS
  * Typ 3 = Windows 95 FAT-32 (LBA)
  * Typ f = Windows 95, erweiterte Partition (LBA)
  * Typ 85 = Linux Extended
  * Typ 8e - Linux LVM
  * Nachdem eine Partition erstellt wurde, muss diese noch formatiert werden. Hierbei vollzieht sich die eigentliche Erstellung des Dateisystems. Der fdisk modifiziert lediglich die Partitionstabelle.
  * Das wichtigste Formatierungswerkzeug unter Linux lautet mkfs. Eigentlich handelt es sich hierbei um ein Frontend, welches je nach zu formatierendem Dateisystem ein passendes Backend-Programm ausf├╝hrt. mkfs ist, inkl. Backends, unter /sbin.
  * mkfs.ext2 erstellt sowohl ext2- als auch ext3-Dateisysteme. Zur Formatierung mit ext3 wird die Option -j verwendet.
  * mkfs.ext3 ist im Normalfall ein Hardlink auf mkfs.ext2. Durch den Aufruf erkennt mkfs.ext2, welches Dateisystem formatiert werden soll.
  * mkfs.reiserfs
  * mkfs.msdos - Von msdos-Partitionen kann kein OS gebootet werden.
  * mkfs.msdos ist in der Regel ein Softlink zu mkdosfs.
  * mkfs.vfat ist ein weiterer Softlink auf mkdosfs.
  * mkfs.ntfs erstellt NTFS-Dateisysteme unterschiedlicher Versionen. Derzeit werden alle Windows-Systeme (bis einschl. Vista) unterst├╝tzt.
  * mkfs.xfs erstellt das urspr├╝nglich von Silicon Graphics (SGI) f├╝r IRIX entwickelte 64-Bit-Dateisystem XFS. XFS pflegt ein Journal, ├Ąhnlich wie ReiserFS, und unterst├╝tzt die Verwendung von Zugriffssteuerungslisten (Access Control Lists). Leider sind die Datenverluste bei einem Stromausfall im System relativ gro├č.
  * mkfs.cramfs erstellt das Dateisystem cramFS. Hierbei handelt es sich um ein kormprimiertes Read-Only-Dateisystem, welches eigentlich ausschlie├člich f├╝r Embedded Systems eingesetzt wird, auf die nicht schreibend zugegriffen werden muss.
  * mkfs.jfs erstellt das Dateisystem JFS, welches urspr├╝nglich f├╝r das Betriebssystem AIX entwickelt wurde.
  * Die beiden wichtigsten Frontends zur Formatierung sind mkfs und mke2fs. mke2fs ist ein Hardlink auf mkfs.ext2 bzw. mkfs.ext3.
  * mkfs-Optionen:
  * t f├╝r type und den zu formatierenden Dateisystemtyp
  * c f├╝r check, pr├╝ft das Ger├Ąt auf fehlerhafte Sektoren.
  * -v f├╝r verbose, erzeugt eine informative Ausgabe.
  * j f├╝r journal, erstellt ein Journal f├╝r ext3.
  * -L f├╝r Label, eine Bezeichnung f├╝r ein Volumen.
  * Ver├Ąnderungen von ext3 gegen├╝ber ext3: Journal, H-Baum-Verzeichnisindizes und Online-Ver├Ąnderung der Dateisystemgr├Â├če.
  * Journal: Ein Journal ist eine regul├Ąre Datei, in die Metadaten (optional die Nutzdaten) geschrieben werden, bevor sie auf das tats├Ąchliche Dateisystem geschrieben werden. Aus einem ext2- kann daher ein ext3-Dateisystem gemacht werden, ohne irgendwelche Daten konvertieren zu m├╝ssen.
  * Vorteil vom Journal: Im Journal stehen sozusagen alle Aktionen (und bei Bedarf auch Nutzdaten), die das Filesystem betreffen. Bei einem Crash kann das Dateisystem somit sogar feststellen, welche ├änderungen noch auf die Platte geschrieben werden konnten und welche noch durchgef├╝hrt werden m├╝ssen. Bringt also mehr Stabilit├Ąt und eine Art "Log".
  * Bsp.: Konvertierung von ext2 nach ext3: Angeblich reicht das Hinzuf├╝gen eines Journals: tune2fs -j /dev/hdb3
  * Bsp.: Alternative lautet mkfs -t ext2 -j /dev/sdb1
  * In Wirklichkeit wird bei beiden oberen Kommandos mke2fs aufgerufen.
  * Eine Swap-Partition erzeugen: Zun├Ąchst mit fdisk formatieren (Partitionstyp 82), anschlie├čend mkswap /dev/sdb4.
  * Die frisch erstellte Swap-Partition vom Betriebssystem verwenden lassen: swapon -v /dev/sdb4
  * Die Swap-Partition wieder deaktivieren: swapoff -v /dev/sdb4
  * Damit die neue Swap-Partition gleich nach dem Systemstart verf├╝gbar wird, muss die Datei /etc/fstab bearbeitet werden:
  * /dev/sdb4 swap swap pri=42 0 0
  * Im Gegensatz zu Windows verwendet Linux im Normalfall keine Swap-Datei, sondern ganze Swap-Partitionen, wie bereits geschrieben. Das hat vor allem den Vorteil, dass es nicht zu einer Fragmentierung des Auslagerungsbereiches kommen kann. Sollte es aber kurzfristig im Speicher einmal eng werden, k├Ânnen Sie ohne Aufwand schnell eine Swap-Datei (mit all ihren Nachteilen) erzeugen.
  * Bsp.: dd if=/dev/zero of=/swapfile bs=1024 count=524288
  * Linux unterscheidet nicht zwischen einer normalen Datei (z. B. /swapfile) und einer Ger├Ątedatei (z. B. /dev/sdb4).
  * mkswap /swapfile
  * swapon /swapfile, dann in fstab eintragen:
  * /swapfile swap swap defaults 0 0
  * Vergewissern, dass der Swap nun wirklich da ist: cat /proc/swaps
==== 104.2 - Die Integrit├Ąt von Dateisystemen sichern  ==== 
  * du - Zeigt Platzverbrauch von Dateien und Ordnern an. -a, -c, -h, -s, --time
  * df - Zeigt die Kapazit├Ątsauslastung von Dateisystemen an. -h, -H, -a
  * fsck - ├ťberpr├╝ft und repariert ein Linux-Dateisystem. -A, -c
  * e2fsck - ├ťberpr├╝ft ein ext2/ext3/ext4 Dateisystem. -f, -p
  * mke2fs - Erstellt ein ext2/ext3/ext4 Dateisystem. -b <bs>, -I <inode size>, -m <reserved size>, -n, -O <feature>, -t <FS-Typ>
  * debugfs - Debuggt ext2/ext3/ext4 Dateisysteme. -b <bs>, -R <comand>
  * dumpe2fs - Zeigt Informationen ├╝ber ein Filesystem, dessen Bl├Âcke und Inodes. -b, -h, -x
  * tune2fs - Passt Parameter von ext2/ext3/ext4-Dateisystemen an. -c <n>, -C <n>, -e <behavior>, -i <interval, -l (wie dumpe2fs), -m <reserved>, -o <mount options>
  * Info: Der Superblock ist eine Art Info-/Meta-Block, der Informationen ├╝ber das Dateisystem enth├Ąlt. Nicht jedes Filesystem besitzt einen solchen Block (z. B. ext2/ext3/ext4 besitzen einen Superblock). Der Superblock startet i.d.R. beim Offset 1024 Byte.
  *  Grobe Struktur eines Unix-Dateisystems: | Boot-Block | Superblock | Inode-Liste | Datenbl├Âcke | 
  * XFS-Tools: xfs_admin, xfs_bmap, xfs_check, xfs_copy, xfs_db, xfs_estimate, xfs_freeze, xfs_fsr. xfs_growfs, xfs_info, xfs_io, xfs_logprint, xfs_mdrestore, xfs_metadump, xfs_mkfile, xfs_ncheck, xfs_quota, xfs_repair, xfs_rtcp
  * fsck = Frontend zur ├ťberpr├╝fung von Dateisystemen. Es ruft andere Tools auf, die ein Filesystem ├╝berpr├╝fen k├Ânnen.
  * e2fsck = Frontend zur ├ťberpr├╝fung von ext2- und ext3-Filesystemen. Ist nur ein Hardlink auf fsck.ext2 und fsck.ext3.
  * fsck.reiserfs pr├╝ft ReisrFS-Dateisysteme.
  * fsck.minix pr├╝ft minix-Dateisysteme.
  * fsck.cramfs pr├╝ft cramFS-Dateisysteme.
  * fsck.xfs pr├╝ft XFS-Dateisysteme.
  * fsck.jfs pr├╝ft JFS-Dateisysteme.
  * fsck.msdos und fsck.vfat sind Links zu dosfck.
  * fsck -f (force) erzwingt die Pr├╝fung, auch wenn das Dateisystem sauber erscheint.
  * fsck -A (all) testet alle Dateisysteme, die in /etc/fstab aufgef├╝hrt sind.
  * fsck -t <Dateisystemtyp> (type) sorgt daf├╝r, dass das zum Dateisystem passende Backend gestartet wird.
  * fsck -c (check) sucht nach defekten Bl├Âcken.
  * fsck -b <Blocknummer> (block) gibt einen alternativen Superblock an.
  * fsck -y (yes) beantwortet alle Fragen des Programms mit "yes", damit eine Reparatur unbeaufsichtigt durchgef├╝hrt werden kann.
  * fsck sollte nur Dateisysteme pr├╝fen, die gerade nicht eingeh├Ąngt sind (besonders, wenn zu Reparaturzwecken ein schreibender Zugriff erfolgt). 
  * Ein Dateisystem wird standardm├Ą├čig alle 36 Mounts oder alle 180 Tage beim Systemstart gepr├╝ft.
  * Um eine solche ├ťberpr├╝fung beim n├Ąchsten Systemstart zu unterbinden, kann shutdown -sf now verwendet werden (-f ist hier unser wichtiger Schalter).
  * Mit shutdown -sF now (-F ist hier unser wichtiger Parameter) erzwingen wir die Pr├╝fung beim n├Ąchsten Reboot.
  * tune2fs erm├Âglicht das Bearbeiten der Dateisystemparameter bei einem ext2- oder ext3-Dateisystem.
  * tune2fs -c legt die maximale Anzahl der Mounts zwischen den Dateisystem├╝berpr├╝fungen fest.
  * tune2fs -C legt fest, wie oft das Dateisystem nach der letzten ├ťberpr├╝fung tats├Ąchlich gemounted wurde.
  * tune2fs -i legt das Intervall zwischen den Dateisystempr├╝fungen in Tagen, Wochen oder Minuten fest, Ohne Zeitangabe schaltet diese Option die regelm├Ą├čige ├ťberpr├╝fung aus.
  * tune2fs -T YYYYMMDD[[HHMM]SS] legt den Zeitpunkt fest, wann die letzte Dateisystempr├╝fung tats├Ąchlich stattgefunden hat.
  * Wenn ein ext2-Dateisystem in ein ext3 konvertiert werden soll, verwendet man beispielsweise tune2fs -j /dev/sda1. -j f├╝r Journal.
  * tune2fs -l /dev/sda1 zeigt Informationen des Superblocks an.
  * debug2fs dient zum interaktiven modifizieren und untersuchen von ext2- sowie ext3-Dateisystemen. Auch kann man mit debugfs gel├Âschte Dateien wiederherstellen. Dazu muss zun├Ąchst das betroffene Dateisystem ausgeh├Ąngt werden...
  * Mit debugfs -> lsdel kann man sich gel├Âschte Inodes anzeigen lassen. Mit dump <Inode-Nummer> /tmp/restored kann man eine Datei dann auf ein Ziel der eigenen Wahl wiederherstellen lassen. 
  * Mit dumpe2fs k├Ânnen detaillierte Informationen ├╝ber ein ext2- oder ext3-Dateisystem eingeholt werden.
  * mke2fs kann mit mke2fs -C die Integrit├Ąt eines Dateisystems ├╝berpr├╝fen. Diese Option war bei mir leider nicht vorhanden.
  * xfs_growfs kann die Gr├Â├če des Dateisystems nachtr├Ąglich erweitern.
  * xfs_info gibt u.a. Informationen ├╝ber die Geometrie des Dateisystems aus.
  * xfs_metadump speichert die Metainformationen des Dateisystems in eine Datei.
  * df (disk free) zeigt die aktuelle Belegung der verwendeten Dateisysteme.
  * df -i (inodes) zeigt die Inode-Belegung.
  * df -h (human readable) zeigt die Informationen im "human readable"-Format an.
  * df -m zeigt die Bl├Âcke in M anstatt in K an.
  * Was die Inodes angeht: Es kommt nur selten zu Engp├Ąssen, daf├╝r m├╝sste man schon sehr viele, sehr kleine Dateien besitzen.
  * du -a (all) zeigt auch die Belegung durch Dateien, nicht nur die von Verzeichnissen.
  * du -k (kilo) zeigt die Bl├Âcke in Kilo an.
  * du -m (mega) zeigt die Anzahl der Bl├Âcke in Megablocks an.
  * du -h (himan readable) macht die Ausgabe angenehmer zu lesen (in K, M, G usw.).
  * du -c zeigt zus├Ątzlich die Summe der gelisteten Eintr├Ąge.
  * du -s zeigt nur die Eintr├Ąge f├╝r die angegebenen Verzeichnisse an. Ohne diese Option zeigt du alle Eintr├Ąge rekursiv f├╝r alle Unterverzeichnisse an.
==== 104.3 - Das Ein- und Aush├Ąngen von Dateisystemen steuern ====
  * /etc/fstab (file system table) - Systemkonfigurationsdatei, die alle verf├╝gbaren Laufwerke und Partitionen sowie deren Mount-Parameter enth├Ąlt. 
  * /media - Nach /media werden meist CDs, DVDs und USB-Sticks gemounted. 
  * mount - H├Ąngt ein Dateisystem ein. -l, -a, -t, -B) -R, -r, -o, -M 
  * umount -  H├Ąngt Dateisysteme aus.  -f, -l
  * Verzeichnis mounten: mount -t ext3 /dev/sda2 /dateien
  * Dateisystemtyp, Device, Ziel (Mountpoint).
  * Wenn das Dateisystem bereits in die /etc/fstab eingetragen wurde, so gen├╝gt ein mount <Device> oder mount <Mountpoint>.
  * USB-Stick einh├Ąngen: mount -t iso 9660 /dev/hdc /media/cdrom0
  * USB-Sticks werden also genauso wie SCSI-Laufwerke behandelt.
  * mount -a (all) h├Ąngt alle Dateisysteme ein, die in der /etc/fstab eingetragen sind.
  * mount -r (read only) h├Ąngt ein Dateisystem als read-only ein.
  * mount -w (writeable) h├Ąngt ein Dateisystem im read/write-Modus ein.
  * mount -t (type) gibt den Dateisystemtyp an, falls erforderlich. Mount unterst├╝tzt ├╝brigens eine Vielzahl von Dateisystemen.
  * mount -v (verbose) sorgt f├╝r eine Best├Ątigung des Vorgangs. Der mount-Befehl zeigt normalerweise keine Erfolgsmeldung an.
  * mount -o (options) ├╝bergibt Mount-Optionen.
  * mount -v -o remount,rw /dateien als Beispiel.
  * mount -t smbfs -o username=michaela,password=geheim  <BackslashBackslash>connor/daten /mnt/connor
  * mount -t nfs archangel:/storage /daten h├Ąngt ein NFS ein.
  * umount <Device>
  * umount <Mountpoint>
  * umount -a -> Alle Dateisysteme, die in /etc/fstab eingetragen sind, aush├Ąngen.
  * In der Regel darf nur root "umount"en. Ausnahmen werden in /etc/fstab eingetragen.
  * Beispiel f├╝r eine fstab-Zeile: /dev/hda2   /  ext3   acl,user_xattr   1  1
  * Die Datei /etc/fstab beherbergt also sechs Spalten.
  * 1. Spalte: Einzuh├Ąngendes Ger├Ąt.
  * 2. Spalte: Mountpoint.
  * 3. Spalten: Dateisystemtyp.
  * 4. Spalte: Mountoptionen.
  * 5. Spalte: Info von "dump". 0 = keine Sicherung des Dateisystems durch dump. Dateisysteme, die nicht permament eingeh├Ąngt sind, sollten nicht ├╝ber die Datei fstab zur Sicherung mit dump vorgemerkt werden.
  * 6. Spalte: Info f├╝r fsck. 0 = keine Pr├╝fung, 1= vorzugsweise gepr├╝ft, 2 = pr├╝fe dieses Filesystem hier nach allen, die hier eine 1 stehen haben. Es ist also eine Art Priorit├Ątenverteilung.
  * dump = Backup-Tool f├╝r ext2, ext3 und ext4.
  * Mountoptionen:
  * auto = automatisches Einh├Ąngen mittels mount -a
  * noauto = verhindert automatisches Einh├Ąngen mittels mount -a
  * usrquota aktiviert die M├Âglichkeit der Verwendung von Quota auf Benutzerebene.
  * grpquota aktiviert die M├Âglichkeit der Verwendung von Quota auf Gruppenebene.
  * suid erm├Âglicht die Funktion der SUID-Bits.
  * nosuid verhindert aus Sicherheitsgr├╝nden die Funktion der SUID-Bits.
  * exec erlaubt das Ausf├╝hren von Dateien auf diesem Dateisystem.
  * noexec verhindert das Ausf├╝hren von Dateien auf diesem Dateisystem.
  * ro = das Dateisystem wird im read-only-Modus eingeh├Ąngt.
  * rw = Einh├Ąngen im read/write-Modus
  * user = erlaubt es einem normalen Benutzer, dieses Dateisystem einzuh├Ąngen. Das betroffene Filesystem kann nur vom selben Benuter oder root eingeh├Ąngt werden.
  * nouser verhindert, dass ein normaler Benutzer ein Dateisystem einh├Ąngen kann.
  * users erlaubt es einem normalen Benutzer, dieses Dateisystem einzuh├Ąngen. Es kann von einem beliebigen Benutzer wieder ausgeh├Ąngt werden.
  * defaults setzt die Standardeinstellung. Ausnahmen werden kommasepariert ├╝bergeben. Defaults sind: rw, suid, dev, exec, auto, nouser, async.
  * /etc/mtab -> Wenn ein Dateisystem eingeh├Ąngt wird, tr├Ągt mount das Filesystem und die Infos zum Mount (z. B. auch den Mointpoint sowie die Mountoptionen) in der Datei /etc/mtab ein. Ausnahme: Dateisysteme, die mit der Option -n eingeh├Ąngt wurden, sind nicht in dieser Datei enthalten.
  * In /proc werden eingeh├Ąngte Dateisysteme in jedem Fall aufgef├╝hrt, also auch die, die mit -n eingeh├Ąngt wurden.
  * cat /proc/mounts
  * /media beinhaltet bevorzugt Wechselmedien.

==== 104.4 - Platten-Quotas verwalten ====
  * quota
  * edquota
  * repquota
  * quotaon
  * Quota: Auf Basis von Benutzerkonten oder Gruppenmitgliedschaften festlegbar.
  * Hard- und Softlimits
  * Quota beziehen sich immer auf eine Partition (also ein Filesystem). Es k├Ânnen keine Quota f├╝r ein Unterverzeichnis festgelegt werden.
  * Beim Erreichen des Hardlimits kann kein Schreibzugriff mehr erfolgen ("harte" Grenze!).
  * Beim Erreichen des Softlimits beginnt die Gracetime oder auch Graceperiod. Darunter versteht man eine Gandenfrist, die dem User gew├Ąhrt wird. Innerhalb dieser Gnadenfrist muss der Benutzer ausreichend Daten l├Âschen, um wieder unterhalb seines Softlimits zu fallen. Tut er das nicht, so wird aus dem Softlimit aus dem Ablauf der Gracefrist ein Hardlimit und dem Benutzer wird der Schreibzugriff verweigert.
  * grace = Gnade, Fristverl├Ąngerung, Aufschub
  * Eine Partition muss mit den entsprechenden Optionen (z. B. via /etc/fstab) gemounted werden, damit Quota darauf benutzbar sind.
  * Beispiel: /dev/sdb1  /dateien  ext3  defaults, usrquota,grpquota   0  0
  * Die Quotierungen werden in Dateien, jeweils getrennt nach Benutzer- und Gruppen-Quota im Hauptverzeichnis eines zu quotierenden Dateisystems abgespeichert. Diese Dateien heissen aquota.user und aquota.group.
  * Um Fehlermeldungen zu vermeiden, sollte man diese beiden Dateien von Hand erstelln und die Dateiberechtigungen 600 vergeben.
  * quotacheck erstellt eine Tabelle der aktuell existierenden Dateien und Verzeichnisse und gleicht das Ergebnis mit den beiden Dateien aquota-user und aquota.group 
  * quotacheck -avug aktualisiert alle Quota auf dem System.
  * quotacheck -vu /dateien aktualisiert nur /dateien.
  * quotacheck -a (all) bearbeitet alle eingeh├Ąngten Dateisysteme.
  * quotacheck -u (user) bearbeitet nur aquota.user
  * quotacheck -g (group) bearbeitet nur aquita.group
  * quotacheck -v (verbose)
  * quotaon -avug aktiviert alle Quota.
  * quotaon -vu /dateien aktiviert das Dateisystem mit dem Hauptverzeichnis /dateien f├╝r Benutzer.
  * Bevor quotacheck laufen kann, m├╝ssen Quotas mit quotaoff deaktiviert werden.
  * quotaoff -vug /dateien
  * quotaoff -avug
  * Mit edquota k├Ânnen Limits gesetzt werden. 
  * Angabe der Limits in Bl├Âcken.
  * Die Gr├Â├če eines Blocks kann mit dumpe2fs -h /dev/sda1 |grep "Block size" festgestellt werden. Meist betr├Ągt sie 1024 Byte (1 KiB).
  * Auch h├Ąufig verwendete Blockgr├Â├če: 4096 Byte (4 KiB).
  * Man kann auch die Inodes zu limitieren (= ungef├Ąhr Anzahl der Dateien).
  * Voreinstellung 0, bedeutet kein Limit.
  * edquota -p albert -u martha kopiert mit -p (Prototype) seine Alberts Einstellungen als Vorlage f├╝r Martha.
  * Benutzer k├Ânnen sich mit quota das aktuelle Quota anzeigen lassen.
  * root kann mit quota -u <user> das Quota der User einsehen.
  * Mit repquota k├Ânnen Berichte ├╝ber konfigurierte Quota und aktuelle Belegungen erstellt werden.
  * repquota -avug /dev/sdb1 oder repquota -avug /dateien (man kann bei Quota meist den Mountpoint oder die Partition angeben).


==== 104.5 - Dateizugriffsrechte und -eigent├╝merschaft verwalten Seite ====
  * SUID, GUID, Sticky Bit (und was ist eigentlich ein Immutable?)
  * umask
  * chmod
  * chown
  * chgrp
  * rwx
  * read = 1 0 0 = 4
  * write = 0 1 0 = 2
  * execute = 0 0 1 = 1
  * read + write = 1 1 0 = 6
  * write + execute = 0 1 1 = 3
  * usw.
  * Berechtigungen ansehen: ls -l
  * wenn  - - - - - - r - - = others may read = world-readable
  * Dateirechte vergeben: chmod 755 <file>
  * chmod -v 755 <file> = -v steht f├╝r verbose
  * chmod -R : -R steht f├╝r rekursiv
  * chmod -c zeigt nur Dateien an, die tats├Ąchlich ver├Ąndert wurden
  * chmod u=rwx,g=rx,o=rx <file>
  * chmod a=rx <file>
  * a f├╝r all
  * chmod a+x <file>
  * chmod u+x,g+x,o+x <file>
  * chmod u-rwx,o-rwx <file>
  * SUID bzw. Setuid bewirkt, dass eine ausf├╝hrbare Datei immer im Sicherheitskontext des Besitzers ausgef├╝hrt wird.
  * Klassisches Beipiel hierf├╝r: passwd
  * Erkennungsmerkmal: ls -l zeigt z. B. -rwsr-xr-x root root 2566 5. Apri 2007 /usr/bin/passwd
  * - am Anfang steht f├╝r Datei, d f├╝r directory
  * das s kann auch bei der gruppe stehen
  * find / -perm -u+s findet Dateien und Verzeichnisse, die ein SUID-Bit gesetzt haben (nur bei Usern)
  * SGID oder Setgid: Der Prozess, der beim Ausf├╝hren einer Datei mit gesetztem Setgid-Bit entsteht, deh├Ârt der Gruppe, die auch die Eigentumsrechte an der Datei besitzt (siehe oben, dass das "s" auch bei der Gruppe stehen kann).
  * Wenn das SGID-Bit auf ein Verzeichnis angewendet wird, dann werden alle Dateien, die in diesem Verzeichnis neu erstellt werden, automatisch der Gruppe zugeordnet, der auch das Verzeichnis selbst geh├Ârt. Wenn man das SGID f├╝r ein Verzeichnis setzt, betrifft es automatisch auch die darin befindlichen Dateien.
  * Sticky Bit: Wenn man das Sticky Bit auf ein Verzeichnis setzt, kann nur noch der Besitzer einer Datei, der Besitzer des Verzeichnisses oder root eine Datei l├Âschen bzw. umbennennen, die sich in diesem Verzeichnis befindet.
  * Das Sticky Bit ist am kleinen t zu erkennen:
  * drwxr-xr-t   2 root root   4096 Oct 19 18:42 public
  * also s bei user, s bei group und t bei others
  * Auf Dateien angewendet, hat das Sticky bit unter Linux keinen Einfluss.
  * Die drei speziellen Berechtigungen - SUID, GUID und Sticky Bit - werden ebenfalls mit chmid gesetzt.
  * chmod 4755 <file> setzt das SUID-bit gleich mit: -rwsr-xr-x, oder: chmod u+s <file>
  * Stick Bit: chmod o+t <directory>
  * Das [sS] verdeckt das x: -rwsr-xr-x bedeutet, dass das SUID-Bit gesetzt ist. Die Datei ist f├╝r den Besitzer ausf├╝hrbar.
  * -rwSr--r-- bedeutet, dass das SUId-Bit gesetzt ist. Die Datei ist f├╝r den Besitzer nicht ausf├╝hrbar.
  * Trotz Verdeckung kann man also dennoch sehen, ob es ausf├╝hrbar ist oder nicht. Das Gleiche gilt f├╝r das SGID und Sticky Bit.
  * chown root:root * setzt f├╝r alle Dateien im Verzeichnis sowohl den Eigent├╝mer, als auch die Gruppe.
  * chown :users <file> setzt nur die Gruppe.
  * chown .users <file> setzt ebenfalls nur die Gruppe.
  * chgrp users <file> setzt die Gruppe.
  * Die umask wird ├╝blicherweise in /etc/profile festgelegt. Soll die Werte aus .bash_profile ├╝berschreiben.
  * Beim Erstellen einer neuen Datei wird die umask von 0666 subtraghiert, w├Ąhrend beim Erstellen neuer Verzeichnisse die umask von 0777 abgezogen wird.
  * Bei den meisten Systemen ist die umask 0022.
  * Mit "umask" l├Ąsst man sich die aktuell gesetzte umask anzeigen.
  * 0666-0022 = 0644 = effektive Berechtigungen f├╝r eine neue Datei
  * 0777-0022 = 0755 = effektive Berechtigungen f├╝r ein neues Verzeichnis
  * umask 0027 und umask 27 haben den gleichen Effekt, da f├╝hrende Nullen weggelassen werden k├Ânnen.
  * umask u=rwx,g=rx,0=
  * F├╝r ext2- und ext3-Dateisysteme gibt es noch einen weiteren Satz von Attributen, die verwendet werden k├Ânnen.
  * lsattr zeigt diese erweiterten Attribute an
  * chattr setzt erweiterte Attribute
  * chattr + f├╝gt Attribute hinzu
  * chattr - entfernt Attribute
  * chattr = weist Attribute zu, bestehende Attribute werden entfernt.
  * chattr = change attributes
  * lsattr = list attributes
  * append only (a) = Die Datei kann nur noch anh├Ąngend erweitert werden.
  * compressed (c) = Die Datei wird durch den Kernel komprimiert.
  * no dump (d) = Die Datei wird durch dump nicht gesichert.
  * immutable (i) - Die Datei kann nicht modifiziert, umbenannt oder gel├Âscht werden.
  * data journalling (j) - Die Daten werden in das ext3-Journal geschrieben, bevor die eigentliche Datei ins Dateisystem geschrieben wird.
  * secure deletion (s) - Wenn die Datei gel├Âscht wird, wird der Datenbereich mit Nullen ├╝berschrieben.
  * no tail-merming (t) - Wird noch nicht unterst├╝tzt.
  * undeletable (u) - Die Datei kann zwar gel├Âscht, im Zweifelsfall jedoch auch problemlos wiederhergestellt werden.
  * no atime updates (A) - Die Zugriffszeit wird nicht aktualisiert. Das soll die Anzahl unn├Âtiger Schreibzugriffe (insbesondere f├╝r Notebooks) auf das Dateisystem minimieren.
  * synchronous directory updates (D) - Verzeichnis├Ąnderngen werden synchron auf die Festplatte geschrieben.
  * synchronous updates (S) - Datei├Ąnderungen werden synchron auf die Festplatte geschrieben.
  * tip of directory hierarchy (T) - Ein Verzeichnis mit diesem Attribut wird als Top der Verzeichnishierarchie erachtet.
  * chattr =aAS <file> = nicht modifizierbar, nur erweiterbar, keine atime dokumentieren, ├änderung sofort auf die Festplatte schreiben lassen, lsattr zeigt z. B..: --S--a-A------ ./h├Ąndler
==== 104.6 - Harte und symbolische Links anlegen und ├Ąndern ====
  * Hardlink - Alias auf den gleichen Inode wie die Originaldatei (auf dem gleichen Filesystem!).
  * Softlink - Alias mit neuem Inode, der auf den Inode der Originaldatei zeigt. Kann auch auf andere Dateisysteme zeigen. Wird bei "ls -l" mit einem "l" gekennzeichnet (z. B. lrwxrwxrwx).
  * ln - Erstellt Links auf Inodes/Dateien/Ordner. -l
  * ln -s <Ziel> <Softlink-Name>
  * lrwxrwxrwx -> Das "l" zeigt an, dass es sich um einen Softlink handelt.
  * chmod blabla auf Softlink ├Ąndert Modus von Zieldatei, nicht vom Link.
  * L├Âschen der Originaldatei -> Softlink bleibt "falsch" stehen.
  * Hardlinks: Nur auf Dateien!
  * Hardlink: Im Nachhinein nicht von der Zieldatei zu unterscheiden.
==== 104.7 - Systemdateien finden und Dateien am richtigen Ort platzieren ====
  * find
  * locate - Findet Dateien/Ordner, die in einer Datenbank aufgelistet werden. -r 
  * updatedb - Baut/aktualisiert die Locate-Datenbank. -f, -o
  * whereis - Zeigt den Pfad zur Binary, dem Source und der Man-Page des Programms an. -b, -s, -m
  * which - Zeigt den vollen Pfad eines Shell-Kommandos an, durchsucht die PATH-Variable.
  * type /etc/updatedb.conf
  * FHS: Filesystem Hierarchy Standard (FHS), Standard f├╝r die Gestaltung von Linux-Filesystemen
  * Vier Kategorien f├╝r Daten laut FHS: shareable, unshareable, variable, static
  * shareable: Verzeichnisse, die von mehreren Systemen gemeinsam genutzt werden k├Ânnen. (z. B. /usr, /opt)
  * unshareable: Verzeichnisse, die keinesfalls gemeinsam genutzt werden k├Ânnen. (Z. B. /etc/, /boot)
  * variable: Verzeichnisse, deren Bestand sich st├Ąndig ├Ąndert. (Z. B. /home/, /var/mail)
  * static: Verzeichnisse, deren Dateien sich eher selten ├Ąndern. (Z. B. /boot/, /opt, /usr)
  * Achtung: whatis zeigt das Beschreibungsfeld einer Manpage an.
  * Achtung: apropos durchsucht die Namen und Beschreibungsfelder der Manpages nach einem angegebenen Suchwort.
  * find /home -name '*.sxw' sucht nach Dateien mit der Endung .swx
  * find -name sucht nach Dateinamen
  * find -amin n sucht nach Dateien, auf die vor n Minuten zugegriffen wurde.
  * find -mmin n sucht nach Dateien, die vor n Minuten modifiziert wurden (z. B. Dateiname, Zugrifssrechte)
  * find -cmin n sucht nach Dateien, die vor n Minuten ge├Ąndert (Dateiname, Zugriffssrechte..) wurden.
  * find -atime n sucht nach Dateien, auf die zuletzt vor n mal 24 Stunden zugegriffen wurde.
  * find -mtime n sucht nach Dateien, die vor n mal 24 Stunden modifiziert wurden.
  * find -ctime n sucht nach Dateien, die vor n mal 24 Stunden ge├Ąndert wurden (Dateinamen, Zugrifssrechte..).
  * find -user sucht nach Dateien des angegebenen Benutzers.
  * find -group sucht nach Dateien der angegebenen Gruppe.
  * find -perm findet Dateien mit den angegebenen Berechtigungen.
  * find -size findet Dateien mit angegebener Gr├Â├če.
  * find / -user  <bla>
  * find / -perm +4000 (Suche nach SUID-Programmen)
  * find / -size +500M findet alle Dateien, die gr├Â├čer als 500 MB sind
  * locate, updatedb, /etc/updatedb.conf
  * PRUNEPATHS="/daten" in updatedb.conf h├Ąlt updatedb davon ab, dieses Verzeichnis zu erfassen.
  * NETPATHS l├Ąsst sogar Netzverzeichnisse indexieren.

One thought on “LPIC-1 Cheat Sheet Module 101

Leave a Reply