Linux - Tipps und Tricks
Diese Seite enthält eine kleine Sammlung von nützlichen Linux-Tipps.
Dateisystem
Reservierten Speicher in ext-Dateisystemen
Standardmäßig wird ein gewisser Anteil des verfügbaren Speicherplatzes bzw. der verfügbaren Blöcke von ext-Dateisystemen für den Benutzer root reserviert. Dies erlaubt dem System, auch dann noch zu funktionieren, wenn nichtprivilegierte Benutzer ihren gesamten Speicherplatz aufgebraucht haben. Unter bestimmten Umständen, wie zum Beispiel bei externen Festplatten oder reinen Datenpartitionen, wird dieser zusätzliche Schutz des Dateisystems jedoch nicht benötigt und kann deshalb deaktiviert werden. Um den Schutz zu deaktivieren, setzt man einfach mit dem folgenden Befehl die Anzahl der reservierten Blöcke auf 0 Prozent. /dev/sdX
ist dabei durch die entsprechende Partition zu ersetzen.
tune2fs -m 0 /dev/sdX
Nachtrag 1:
Bisher war ich immer der Meinung, dass man den Wert der reservierten Blöcke ruhig auf 0 Prozent setzen kann, wenn es sich bei der betreffenden Partition nicht um die Systempartition handelt. Allerdings wird der reservierte Speicherplatz auch dazu verwendet, um die Fragmentierung des Dateisystems zu verringern.
Quelle: https://wiki.ubuntuusers.de/ext/#Reservierte-Bloecke
Aus diesem Grund ist es nicht empfehlenswert die Anzahl der reservierten Blöcke bei Systempartitionen oder Partitionen mit vielen Schreibzugriffen auf 0 zu setzen. Dort sollte man den voreingestellten Wert von 5 Prozent belassen. Bei reinen Datenpartitionen hingegen kann man bei Bedarf ruhig einen Wert zwischen 1 und 5 Prozent einstellen, um etwas mehr Speicherplatz zu gewinnen.
Nachtrag 2:
Einer der prominentesten Kernelentwickler im Bereich Dateisysteme, Theodore Ts’o, hat sich zu dem Thema wie folgt geäußert:
If you set the reserved block count to zero, it won't affect performance much except if you run for long periods of time (with lots of file creates and deletes) while the filesystem is almost full (i.e., say above 95%), at which point you'll be subject to fragmentation problems. Ext4's multi-block allocator is much more fragmentation resistant, because it tries much harder to find contiguous blocks, so even if you don't enable the other ext4 features, you'll see better results simply mounting an ext3 filesystem using ext4 before the filesystem gets completely full.
If you are just using the filesystem for long-term archive, where files aren't changing very often (i.e., a huge mp3 or video store), it obviously won't matter.
Quelle: https://www.redhat.com/archives/ext3-users/2009-January/msg00026.html
Image mit dd erstellen
Das Programm "dd" dient zum bit-genauen Kopieren von Festplatten, Partitionen oder Dateien. "Bit-genaues" Kopieren bedeutet, dass der Datenträger Bit-für-Bit bzw. Byte-für-Byte ausgelesen und beschrieben wird, unabhängig von dessen Inhalt und Belegung. In den folgenden Beispielen ist /dev/sdX
durch die entsprechende Partition zu ersetzen.
dd if=/dev/sdX of=image.img bs=1M | Image von "/dev/sdX" in "image.img" erstellen |
cmp image.img /dev/sdX | Image "image.img" mit "/dev/sdX" vergleichen |
dd if=image.img of=/dev/sdX bs=1M | Image "image.img" nach "/dev/sdX" wiederherstellen |
dd if=/dev/sdX | gzip > image.img.gz | komprimiertes Image von "/dev/sdX" erstellen |
gzip -cd image.img.gz | dd of=/dev/sdX | komprimiertes Image aus "image.img.gz" wiederherstellen |
Ab Version 8.24 ist es möglich sich mit dem Parameter "status=progress" den Fortschritt anzeigen zu lassen.
Quelle: https://wiki.ubuntuusers.de/dd/
Festplatte mit dd sicher löschen
Neben dem bit-genauen Kopieren von Festplatten und Partitionen eignet sich das Programm "dd" auch zum sicheren Löschen von Festplatten. In den folgenden Beispielen ist /dev/sdX
durch die entsprechende Partition zu ersetzen. Achtung: Dabei werden alle Daten auf der Festplatte unwiderruflich gelöscht!
dd if=/dev/zero of=/dev/sdX bs=1M | überschreibt die Partition "/dev/sdX" mit Nullen |
dd if=/dev/urandom of=/dev/sdX bs=1M | überschreibt die Partition "/dev/sdX" mit Pseudozufallszahlen |
Ab Version 8.24 ist es möglich sich mit dem Parameter "status=progress" den Fortschritt anzeigen zu lassen.
Quelle: https://wiki.ubuntuusers.de/dd/
Zwar blockiert "/dev/random" im Gegensatz zu "/dev/urandom" nicht, allerdings sinkt die Lese- bzw. Schreibgeschwindigkeit recht schnell auf wenige Megabyte pro Sekunde. Der Grund hierfür ist der recht aufwändige Algorithmus zur Erzeugung der Pseudozufallszahlen. Da für das Überschreiben der Festplatte jedoch keine wirklich hochwertigen Zufallszahlen benötigt werden, reicht es auch einfach den Datenstrom von "/dev/null" mit Hilfe von OpenSSL mit einem beliebigen/zufälligen Passwort zu verschlüsseln und auf die Festplatte zu schreiben.
dd if=/dev/zero bs=1M | openssl enc -aes-256-ctr -pass pass:foo -nosalt | dd of=/dev/sdX bs=1M
Quelle: https://wiki.archlinux.org/index.php/Securely_wipe_disk/Tips_and_tricks#dd_-_advanced_example
Texteditoren
Nano
Nano ist ein einfacher Texteditor, der bei den meisten Linux-Distributionen standardmäßig installiert ist. Im Vergleich zu anderen Editoren wie z.B. Vim hat Nano einen deutlich geringeren Funktionsumfang. Allerdings eignet er sich gerade deshalb für kleinere Editierarbeiten oder auch Einsteiger.
einige Tastenkombinationen:
[STRG] + [G] | Hilfe anzeigen |
[STRG] + [X] | Datei schließen |
[STRG] + [O] | Datei speichern |
[STRG] + [W] | Datei durchsuchen |
[ALT] + [C] | Aktuelle Cursorposition ständig anzeigen an/aus |
Vim - (Vi IMproved)
Vim (Vi IMproved) ist eine Weiterentwicklung des bekannten Unix-Texteditors Vi. Im Vergleich zu anderen Texteditoren ist die Bedienung des sehr mächtigen Texteditors zunächst etwas ungewohnt und erscheint insbesondere Anfängern unnötig kompliziert. Im Prinzip reichen jedoch schon eine handvoll Befehle aus, um mit dem Editor sinnvoll arbeiten zu können. Im Folgenden werde ich einige der wichtigsten Grundbefehle kurz vorstellen.
Wer mehr über die Bedienung und Konfiguration von Vim erfahren möchte, dem kann ich die folgende Seite empfehlen: https://wiki.ubuntuusers.de/VIM/
Vim konfigurieren
In der Konfigurationsdatei ~/.vimrc
können einige persönliche Einstellungen vorgenommen werden:
syntax on set number set ts=4
Mit den beiden ersten Optionen schaltet man das Syntax-Highlighting und die Zeilennummerierung ein. Die Option "set ts=4" setzt die Tabulatorweite auf 4 Zeichen.
Befehlsmodus / Eingabemodus
- Befehlsmodus [ESC]: In diesem Modus können nur Befehle absetzen werden, um den Text zu bearbeiten. Es kann jedoch kein Text eingeben werden. Standardmäßig startet Vim in diesem Modus.
- Eingabemodus [i]: In diesem Modus kann man wie gewohnt Text eingeben.
Navigation
[g] [g] | an den Anfang der Datei springen |
[Shift] + [g] | an das Ende der Datei springen |
Kopieren und Einfügen
[v] | zeichenweise markieren (Visueller Modus) |
[Shift] + [v] | zeilenweise markieren (Visueller Modus) |
[y] [y] oder [Shift] + [y] | aktuelle Zeile kopieren |
[5] [y] [y] | 5 Zeilen kopieren |
[p] | Zeile unterhalb des Cursors einfügen |
[Shift] + [p] | Zeile oberhalb des Cursors einfügen |
Löschen
[x] | Zeichen unter dem Cursor löschen |
[d] [d] | aktuelle Zeile löschen |
[5] [d] [d] | 5 Zeilen löschen |
Suchen
/SUCHMUSTER | nach SUCHMUSTER ab der aktuellen Cursorposition vorwärts suchen |
?SUCHMUSTER | nach SUCHMUSTER ab der aktuellen Cursorposition rückwärts suchen |
[n] | letzten Suchbefehl wiederholen (vorwärts) |
[Shift] + [n] | letzten Suchbefehl wiederholen (rückwärts) |
Vim beenden
:q | beenden ohne zu speichern |
:q! | beenden ohne zu speichern (Änderungen verwerfen) |
:wq | speichern und beenden |
:w | nur speichern |
Ein sogenanntes Cheat-Sheet mit den wichtigsten Vim-Befehlen befindet sich übrigens hier.
Konsole
Fenstermanager Screen
Mit dem Fenstermanager "Screen" lassen sich mehrere virtuelle Konsolensitzungen erzeugen und verwalten. Ein typischer Anwendungsfall ist, wenn man sich mittels SSH an einem Server anmeldet und möchte, dass ein gestartetes Programm auch nach dem Beenden der SSH Verbindung auf dem Server weiter läuft. Hierzu meldet man sich einfach wie gewohnt via SSH an dem Server an, erzeugt mit "screen" eine neue Konsolensitzung und startet anschließend das gewünschte Programm. Danach kann man die virtuelle Konsolensitzung trennen und die SSH Verbindung beenden. Das gestartete Programm läuft nun im Hintergrund weiter und man kann bei der nächsten Anmeldung die Konsolensitzung mit dem Programm einfach wiederaufnehmen.
[Strg] + [A] + [D] | trennt die Verbindung zur Konsolensitzung (detach) |
screen -S [SESSION] | erzeugt eine neue Sitzung mit dem Namen [SESSION] |
screen -r | nimmt die Sitzung wieder auf (falls nur eine einzige Sitzung im Hintergrund läuft) |
screen -r [SESSION] | nimmt die Sitzung mit dem Namen [SESSION] wieder auf |
screen -ls | listet die Namen alle aktiven Sitzungen auf |
System
Magic SysRQ
Obwohl Linux normalerweise recht stabil läuft, kann es in Ausnahmefällen vorkommen, dass sich das Betriebssystem nach dem Auftreten eines Fehlers in einem undefinierten Zustand befindet und nicht mehr reagiert. Möchte man das System in einem solchen Fall nicht einfach "hart" neustarten und dadurch einen eventuellen Datenverlust riskieren, dann lohnt es sich mit dem sogenannten "Magic System Request" vertraut zu machen. Der "Magic SysRQ" ist eine spezielle Funktion im Kernel des Betriebssystems, die es dem Benutzer in einem solchen undefinierten Zustand ermöglicht das System mittels einer speziellen Tastenkombination entweder sauber herunterzufahren oder weitere Maßnahmen zur Fehlersuche zu ergreifen.
Ob die SysRequests auf dem System überhaupt aktiviert sind, kann dem folgenden Befehl überprüft werden:
cat /proc/sys/kernel/sysrq
Wird eine Wert ungleich 0 ausgegeben, so sind die SysRequests aktiviert. Bei einer 0 sind sie deaktiviert.
Das Auslösen der SysRequests erfolgt durch das Drücken der Tasten [Alt] + [Druck] und dem entsprechenden Buchstaben für den Befehl, den man ausführen möchte. Die wichtigsten Befehle können der folgenden Tabelle entnommen werden.
[R] | unrar | Nimmt der grafischen Oberfläche die Kontrolle über Tastatur und Maus. |
[E] | term | Sendet das Signal SIGTERM an alle Prozesse außer Init. |
[I] | kill | Sendet das Signal SIGKILL an alle Prozesse außer Init. |
[S] | sync | Schreibt die Daten aus dem Kernel-Festplatten-Cache auf die Festplatten. |
[U] | umount | Alle eingehängten Partitionen werden ausgehängt, und danach nur-lesbar eingehängt. |
[B] | reboot | Startet den Rechner neu ohne vorheriges Unmounten oder Syncen. |
Die am häufigsten benötigte Sequenz ist ein sogenannter Notfall-Neustart, bei dem zunächst die Dateisystemcaches sicher geleert und alle Dateisysteme sicher ausgehängt werden, bevor letztendlich ein kontrollierter Neustart erfolgt. Hierfür hält man [Alt] + [Druck] die ganze Zeit gedrückt und betätigt nacheinander die Tasten [R], [E], [I], [S], [U] und [B].