Prozessor gezielt auslasten

Mit diesem Befehl kann man künstlich die Systemlast erhöhen. Beim Aufruf begibt sich dieser durch das angehängte „&“ direkt in den Hintergrund und kann mit „fg“ wieder zurückgeholt werden. Bei einem Mehrkernprozessor können bzw. müssen mehrere Prozesse dieser Art gestartet werden um dieses auszulasten. Kombiniert mit einem „nice“ Wert kann die erzeugte Auslastung manipuliert werden, bei laufendem Prozess kann dieses manipulieren auch mit „renice“ weiter verfeinert bzw. angepasst werden.

cat /dev/zero | gzip > /dev/null &

Dateien rekursiv in Verzeichnissen zählen

Damit kann man alle Dateien in einem Verzeichnis zählen inklusive der enthaltenen Unterordnern.

find <Ordner> -type f | wc -l

Wenn man zwei Ordner z.B. mit gleichem Namen hat (durch rsync), kann man das auch zum Vergleichen nutzen:

Ordner=<OrdnerName> && find <Pfad1>$Ordner -type f | wc -l && find <Pfad2>$Ordner -type f | wc -l

Master Boot Record (MBR) zurücksetzen

Mit einer Linux-Live-CD kann man relativ einfach einen Master Boot Record zurücksetzen, um eine leere Partitionstabelle zu bekommen. Dazu einfach auf der Konsole folgenden Befehl eingeben:

dd if=/dev/zero of=/dev/sdx bs=512 count=1

Dieser Befehl schreibt in die ersten 512 Byte der anzugebenden SATA-Festplatte Nullen rein. Sollten noch IDE-Festplatten im Einsatz sein, muss es nicht „sdx“, sondern „hdx“ lauten. Das x ist durch den Buchstaben der gewünschten Festplatte zu ersetzen.

awk – Auswertung von Textdateien

Was Awk ist, kann man auf Wikipedia nachlesen. Ich schreibe mir hier Zusammenstellungen auf, die mir merkenswert erscheinen.

Deinstallations-Liste aus Paketmanager dpkg erstellen

Manchmal muss man auch mal aufräumen. Dann hilft es schon, wenn man sich die Liste seines lokalen Paketmanagers (dpkg) für sein Online-Paketverwaltungstool (apt-get, aptitude) aufbereiten kann.

dpkg -l | grep lxde | awk '{progs=progs$2" "} END {print progs}'

Damit wird mit dpkg eine Liste der installierten Programme erzeugt und diese auf den Begriff lxde gefiltert. Das Ergebnis wird an awk per Pipe weitergegeben. Awk verarbeitet aus allen Zeilen die Spalte 2 ($2) und speichert diese zusammen mit einem Leerzeichen in der Variable progs. Zum Schluss (END) wird die Variable progs ausgegeben.

Jetzt kann man noch die Paketverwaltung seiner Wahl mit dem entsprechenden Deinstallations-Befehl (remove, purge) davorsetzen und die Programme werden entfernt.

Ein erweitertes Suchergebnis erhält man mit egrep, so dass man auch nach mehreren Begriffen suchen kann:

dpkg -l | egrep '(lxde|gnome|gdm)' | awk '{progs=progs$2" "} END {print progs}'

Hier muss man nur beachten, dass die Regular Expressions in Anführungszeichen stehen müssen. Im hier gezeigten Beispiel werden von alle Zeilen an awk übergeben, die „lxde“ oder „gnome“ oder „gdm“ enthalten.

Vim – Erweiterung des Texteditors vi

Suchen und Ersetzen mit vim

Hier mal die Suchen-Ersetzen-Möglichkeiten aus dem vimtutor:

Um das ERSTE Vorkommen von alt in einer Zeile durch neu zu ersetzen, tippe
 :s/alt/neu
Um ALLE Vorkommen von alt in einer Zeile durch neu zu ersetzen, tippe
 :s/alt/neu/g
Um Ausdrücke innerhalb von zwei Zeilen zu ersetzen, tippe
 :#,#s/alt/neu/g
Um alle Vorkommen in der ganzen Datei zu ersetzen, tippe
 :%s/alt/neu/g
Um jedes Mal nach einer Bestätigung gefragt zu werden, füge 'c' hinzu.
 :%s/alt/neu/gc (*c*onfirm)

Suchoptionen für vim

Manchmal sucht man ein Wort, findet es in vim aber nicht, weil bei der Suche standardmäßig die Groß-/Kleinschreibung unterschieden wird. Das bekommt durch das Setzen der Option „ignore case“ weg:

:set ic

Zusätzlich kann man sich die Fundstellen über die Option „hlsearch“ hervorheben lassen:

:set hls

Die inkrementelle Suche ist nur meines Erachtens gewöhnungsbedürftig:

:set is

Alle Optionen kann man sich natürlich auch dauerhaft in der zentral Datei /etc/vim/vimrc oder in der userspezifischen Datei ~/.vimrc speichern:

# Suchoptionen für vim :set ic hls is

Wer sich diese Optionen dauerhaft speichern will, kann das entweder für sich persönlich in der Datei ~/.vimrc oder zentral für alle Benutzer in /etc/vim/vimrc.local. Soll eine Konfiguration für alle zukünftigen Benutzer angelegt werden, muss diese im Verzeichnis /etc/skel abgelegt werden. Von dort werden alle Dateien in das Home-Verzeichnis des neuen Benutzers kopiert.

LVM Logical Volume verkleinern

Wie das Anlegen eines Logical Volumes funktioniert, habe ich hier erklärt.

Damit das Verkleinern des Logical Volumes erfolgen kann müssen zuvor einige Schritte durchgeführt werden. Dazu gehören:

  • Dienste stoppen, die auf die entsprechende Partition zugreifen
  • Partition aushängen
  • Dateisystemcheck (Defragmentierung)

Vorbereitungen

Ich erkläre das hier am Beispiel des Samba-Servers unter Debian Lenny. Es gelten folgende Annahmen:

  • LV = /dev/mapper/vg00-srv_samba
  • Dateipfad = /srv/samba

Also los. Dienste stoppen

root# /etc/init.d/samba stop
Stopping Samba daemons: nmbd smbd.

Dateisystem aushängen

root# umount /dev/mapper/vg00-srv_samba

Dateisystem überpüfen

root# e2fsck -f /dev/mapper/vg00-srv_samba

Verkleinern

Jetzt also zuerst das Dateisystem verkleinern und dann das Logical Volume:

root# resize2fs /dev/mapper/vg00-srv_samba 512000000
root# lvreduce -L -1000G /dev/mapper/vg00-srv_samba

Danach wieder einhängen

root# mount /dev/mapper/vg00-srv_samba

iptables Debug-Modus

Um den Debug-Modus zentral ein- und auszuschalten empfiehlt sich eine Variable:

#!/bin/sh
# Variablen
DEBUG=0
LAN_IFACE="eth0"
...

welche dann später die Chains bestimmt:

#
# Debug-Variable auswerten
#
if [ $DEBUG == 1 ]; then
  ACCEPT="OWNACCEPT"
  DROP="OWNDROP"
else
  ACCEPT="ACCEPT"
  DROP="DROP"
fi

So kann man dann (hier am Beispiel der lokalen Kommunikation) einen Parameter bei der iptables-Konfiguration übergeben:

### Lokale Kommunikation ###
iptables -A INPUT -i lo -j $ACCEPT
iptables -A OUTPUT -o lo -j $ACCEPT