Jul 12

vi ist aufgrund seiner geringen Größe und weiten Verbreitung auf vielen *NIX-Betriebssystemen standardmäßig installiert. Aus diesem Grund ist es ein großer Vorteil, wenn man zumindest die Grundfunktionalität des Editors kennt und damit Dateien (z.B. Konfigurationsdateien) bearbeiten kann.

Mit dem Befehl “vimtutor” kann man in der Konsole ein vi-Tutorial starten, das sehr zu empfehlen ist und einem den Editor näher bringt.

Hier möchte ich dennoch die Funktionalität für Eilige kurz zusammenfassen:

Zum Starten von vi tippt man den Befehle “vi [-Optionen] Dateiname” in die Konsole.

Folgende wichtige Optionen stehen zur Verfügung:
-i: vi wird im Eingabemodus anstelle standardmäßig im Befehlsmodus gestartet.
-R: Die angegebene Datei wird Read-Only geöffnet.
+[n]: Sprint zu Zeile n, wobei [n] durch eine Ganzzahl zu ersetzen ist.

Selbstverständlich können Optionen auch miteinander kombiniert werden:
vi -R +50 .bash_history

Der Editor selbst kennt drei unterschiedliche Modi: Befehlsmodus, Eingabemodus und Kommandozeile. Standardmäßig wird vi im Befehlsmodus gestartet, mit der oben genannten Option -i kann allerdings der Eingabemodus erzwungen werden.

Im Eingabemodus kann man wie von einem Editor zu erwarten Text bearbeiten. Dabei werden die gedrückten Tasten an der aktuellen Cursor-Position eingefügt/gelöscht/… . Um den Eingabemodus oder die Kommandozeile (wieder) zu verlassen und in den Befehlsmodus (zurück) zu gelangen, muss man nur die Taste “Esc” drücken. In frühen Versionen von vi konnte man nicht erkennen, welcher Modus aktiv war, deshalb drücken vi-Benutzer vorsichtshalber gerne die Taste “Esc”, um sicher im Befehlsmodus zu sein, bevor sie fortfahren.

Zur Kommandozeile gelangt man, indem man im Befehlsmodus “:” eintippt. Wichtige Kommandos sind:
e!: Alle Änderungen seit dem letzten Speichern verwerfen.
w: Speichern.
wq: Speichern und beenden.
q: Beenden (nur wenn keine Änderungen vorgenommen wurden).
q!: Beenden ohne zu speichern.

Zum Speichern einer Datei und anschließendem beenden von vi tippt man im Befehlsmodus folgendes ein:
:wq

Im Befehlsmodus stehen unter anderem folgende wichtige Befehle zur Verfügung:

Bearbeiten:
i: Eingabe vor dem aktuellen Zeichen (wechselt in den Eingabemodus).
a: Eingabe nach dem aktuellen Zeichen (wechselt in den Eingabemodus).
I: Eingabe am Beginn der aktuellen Zeile (wechselt in den Eingabemodus).
A: Eingabe am Ende der aktuellen Zeile (wechselt in den Eingabemodus).
R: Überschreiben einschalten.

Bewegen:
w: Ein Wort vorwärts bewegen.
[n]w: [n] Wörter vorwärts bewegen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
b: Ein Wort zurück bewegen.
[n]b: [n] Wörter zurück bewegen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
0: Zum Zeilenanfang spingen.
$: Zum Zeilenende springen.
G: Zum Ende des Dokuments springen.
[n]G: Zur Zeile [n] des Dokuments springen, wobei [n] durch eine Ganzzahl zu ersetzen ist.

Löschen:
dd: Aktuelle Zeile löschen.
[n]dd: [n] Zeilen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
x: Nächstes Zeichen löschen.
[n]x: Nächste [n] Zeichen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
X: Vorheriges Zeichen löschen.
[n]X: Vorherige [n] Zeichen löschen, wobei [n] durch eine Ganzzahl zu ersetzen ist.
D: Löschen des Textes beginnend von Cursor-Position bis zum Zeilenende.

Rückgängig:
u: Letzten Befehl rückgängig machen.
U: Letzten Befehl in aktueller Zeile rückgängig machen.

Suchen:
/[pattern]: Vorwärtssuche nach [pattern], wobei [pattern] durch den Suchbegriff zu ersetzen ist.
?[pattern]: Rückwärtssuche nach [pattern], wobei [pattern] durch den Suchbegriff zu ersetzen ist.
n: Suche erneut durchführen.
N: Suche in umgekehrte Richtung erneut durchführen.

Speichern und beenden:
ZZ: Speichern und beenden (entspricht “wq” in der Kommandozeile).

Jul 01

Bei der Installation von Programmen mit aptitude oder apt-get auf Debian GNU/Linux (oder Derivaten) wird eine Lock-Datei angelegt, damit zwei Administratoren nicht gleichzeitig in den kritischen Bereich kommen können. Führt man die Installation z.B. via SSH durch und die Verbindung wird unerwartet unterbrochen, bleibt die Lock-Datei erhalten, wenn Benutzereingaben für die Installation erforderlich waren. Verbindet man sich anschließend erneut via SSH und möchte die Installation erneut durchführen, wird folgende Fehlermeldung ausgegeben:

debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process

Diese Meldung besagt, dass die Lock-Datei bereits existiert, sich derzeit jemand im kritischen Bereich befindet und deshalb keine Installation durchgeführt werden kann. Da wir allerdings wissen, dass die SSH-Verbindung unterbrochen wurde und deshalb noch der “alte” Installationsprozess den Zugriff auf aptitude bzw. apt-get blockiert, können wir diesen beenden. Mit dem folgenden Befehl erfahren wir, welcher Prozess die Datei blockiert:

fuser -v /var/cache/debconf/config.dat

Die Ausgabe sieht wie folgt aus:

                     USER        PID ACCESS COMMAND
/var/cache/debconf/config.dat:
                     root       4233 f.... dpkg-preconfigu

Wir erkennen, dass der Prozess “dpkg-preconfigu” mit der PID “4233″ die Datei blockiert, deshalb beenden wir diesen mit dem folgenden Befehl:

kill -9 4233

Diesen Vorgang wiederholen wir solange, bis “fuser -v /var/cache/debconf/config.dat” keinen blockierenden Prozess mehr auflistet. Abschließend entfernen wir noch die Lock-Datei und einer weiteren/erneuten Installation mittels aptitude oder apt-get steht nichts mehr im Wege:

rm -R /var/lib/dpkg/lock

Für alle Befehle sind Superuser-Rechte (root) erforderlich.

Jun 21

Unter Linux (z.B. Debian) muss man sich um administrative Tätigkeiten (z.B. Installation von Programmen) ausführen zu dürfen mit dem Superuser root anmelden. Verwendet man beispielsweise einen Desktop-Manager (z.B. GDM), so ist die Anmeldung als root zumindest unter Debian nicht erlaubt. Damit soll unterbunden werden, dass übliche Tätigkeiten wie etwa erstellen von Texten mit Superuser-Rechten durchgeführt werden, obwohl diese nicht benötigt werden. Wäre man immer mit Superuser-Rechten angemeldet, bestünde jederzeit die Gefahr, das System zu beschädigen. Ob durch Eigenverschulden oder ein fremdes Skript ist schlussendlich egal, denn das System wäre kaputt. Deshalb sollte man immer als Benutzer mit eingeschränkten Rechten arbeiten.

In der Konsole werden die Befehle su bzw. sudo (u.U. erst nach expliziter Installation) bereitgestellt. Diese erlauben es als Benutzer mit eingeschränkten Rechten Programme/Skripte mit Superuser-Rechten auszuführen. Doch zwischen beiden Befehlen besteht ein nicht zu vernachlässigender Unterschied. Wechselt man mit dem Befehl zu den Superuser-Rechten, so muss das Passwort von root eingegeben werden und man bleibt so lange mit Superuser-Rechten angemeldet, bis man sich selbst wieder abmeldet. Der Befehl sudo erfordert die Eingabe des eigenen Passworts und besitzt außerdem einen Timeout. Nach Ablauf des Timeouts fordert sudo erneut zur Eingabe des Passworts auf. Da die “Abmeldung” der Superuser-Rechte bei sudo automatisch erfolgt, kann auf einem Computer nach Ablauf dieser Zeit kein Unsinn gemacht werden, sollte dieser unbeaufsichtigt bleiben und anderen Menschen zugänglich sein.

Wenn man einen Befehl mit Superuser-Rechten ausführen möchte, verwendet man sudo. Möchte man allerdings mehrere Befehle mit Superuser-Rechten ausführen, dennoch nicht auf den sicheren und bequemen Timeout verzichten, kann man sudo su in die Konsole eintippen. Bis zum Auftreten des Timeouts hat man Superuser-Rechte in der Konsole, d.h. alle Befehle die ab diesem Zeitpunkt bis zum Timeout ausgeführt werden, werden mit Superuser-Rechten ausgeführt.

Ein weiterer Vorteil von sudo ist, dass mehrere Benutzer mit eingeschränkten Rechten administrative Aufgaben erledigen können, ohne dass sie das Passwort von root wissen müssen. Außerdem können die erlaubten Aufgaben mit sudo beschränkt werden.

Feb 29

Am 31.03.2008, genau ein Jahr nach der Veröffentlichung von Debian GNU/Linux 4.0 “Etch” (stable) und drei Jahre nach der Veröffentlichung des Vorgängers 3.1 “Sarge” (oldstable) wird dessen Support eingestellt. Neben der aktuellen stabilen Version müssen auch drei zukünftige Versionen gepflegt werden. Weiterlesen »

Feb 24

Pro Netzwerkkarte/Network-Interface können mehrere IP-Adressen angelegt werden, dies ist besonders für Shared-Hosting-Server interessant. Die Konfigurationsdatei ist allerdings von Distribution zu Distribution unterschiedlich. Weiterlesen »