SelfLinux Systemverwaltung Elementare Informationen Abschnitt 3 | SelfLinux-0.13.0

| Elementare Informationen | Autoren Formatierung GFDL

#### 3 Weitere Kommandos

#### 3.1 dmesg

Der Kernel gibt im Laufe der Zeit eine Menge Informationen an den klogd, den kernel log daemon weiter. dmesg zeigt die aktuellsten Meldungen an. Hier sind z. B. die Bootmeldungen nachzulesen, aber auch das Einlegen einer neuen CD wird hier vermerkt. Weil in diesen Meldungen auch all die Hardwareinformationen enthalten sind, die beim Hochfahren des Systems anfallen, ist dmesg für die Fehlersuche oder die Konfiguration sehr nützlich.

#### 3.2 date

Wer möchte nicht gerne wissen, welcher Tag heute ist (vor allem nach stundenlangem Programmieren, vorzugsweise nachts). Dazu gibt date das aktuelle Datum und die Uhrzeit aus:

user@linux $ date Fr Jan 21 22:57:58 CET 2000

Manchmal kann es aber notwendig sein, sich das Datum in einem individuellem Format ausgeben zu lassen. Wenn dies der Fall ist, sieht der Befehl folgendermaßen aus:

date +'Format'

Format ist eine Zeichenfolge, die angibt, wie das ausgegebene Datum aussehen soll. Dabei stehen dem Benutzer verschiede Platzhalter, die durch aktuelle Werte ersetzt werden, zur Verfügung. Die wichtigsten sind unter anderem:

- %d: Aktueller Tag des Monats von 01 bis 31
- %H: Aktuelle Stunde von 00 bis 23
- %m: Aktueller Monat von 01 bis 12
- %M: Aktuelle Minute von 00 bis 59
- %Y: Aktuelles Jahr von 1970 bis ...

Beispiel:

user@linux $ date +'%Y-%m-%d' 2000-01-21

Von Zeit zu Zeit will man sich aber auch das Datum in einem bestimmten standarisiertem Format ausgeben lassen. Dazu stehen folgen Optionen zur Verfügung:

- -I[TIMESPEC], --iso-8601[=TIMESPEC]
  Gibt das Datum im ISO 8601 Format aus. Als TIMESPEC kann date (gibt nur das Datum aus), hours (gibt zudem noch die Stunde an), minutes (die Minuten werden noch zusätzlich angezeigt) oder seconds (die Sekunden werden auch noch angezeigt) sein. Als Default für TIMESPEC ist date eingestellt.
- -R, --rfc-822
  Gibt das Datum im RFC 822 Format aus.
- -u, --utc, --universal
  Gibt das Datum im UTC Format aus.

Besitzt man die nötigen administrativen Rechte, kann man mit date auch Datum und Uhrzeit ändern. Dazu gibt es die Option -s. Wichtig dabei ist dennoch ein Format anzugeben. Das Format gibt dann an in welcher Form das Datum übergeben wird. Die genaue Syntax lautet wie folgt:

date +'Format' -s "Datum"

bzw.

date +'Format' --set="Datum"

Dabei gibt 'Datum' das neue Datum an. Selbstverständlich kann anstelle von +'Format' auch eine der Optionen -I, -R oder -u verwendet werden.

#### 3.3 dd

Die primäre Aufgabe von dd ist es Daten zu kopieren und entsprechend zu konvertieren. Dabei kopiert dd die Daten nicht Dateiweise, sondern Blockweise. Das Haupteinsatzgebiet von dd ist es Kopien von ganzen Devices auf einem anderen (physikalischen) Device anzulegen. Somit eignet sich dd auch dafür, ein ISO-Abbild von einer CD auf der Festplatte zu sichern.

dd besitzt eine Reihe von verschiedenen Optionen, die verschiedene Möglichkeiten der Konvertierung darstellen. Die beiden wichtigsten Optionen sind allerdings if=DATEI und of=DATEI. if=DATEI gibt dabei die Datei an, von der gelesen werden soll. of=DATEI gibt die Datei an, in die geschrieben werden soll.

Ein Beispiel, um ein ISO-Abbild auf der Festplatte im aktuellen Verzeichnis anzulegen, lautet:

root@linux # dd if=/dev/cdrom of=cdrom.iso

Wie schon angesprochen kopiert dd nicht Dateiweise sondern Blockweise. Aus diesem Grund ist es auch möglich Daten zu kopieren und dabei die Blockgröße zu ändern. Ebenso ist es auch möglich nur bestimmte Blöcke von einem Device zu kopieren.

Um die Blockgröße für die Ein- und Ausgabe festzulegen, stehen drei Optionen zur Verfügung:

- ibs=n: Legt die Eingabeblockgröße auf n Bytes fest.
- obs=n: Legt die Ausgabeblockgröße auf n Bytes fest.
- bs=n: Legt die Ein- und Ausgabeblockgröße auf n Bytes fest. bs hat Vorrang von ibs und obs.
- cbs=n: Legt die Datensatzlänge auf n Bytes fest.

Die voreingestellte Größe für die Ein- und Ausgabeblöcke ist 512 Byte.

Um nur bestimmte Blöcke zu kopieren, stehen folgende Optionen zur Verfügung:

- skip=n: Überspringt n-Blöcke am Anfang der Eingabedatei.
- seek=n: Überspringt n-Blöcke am Anfang der Ausgabedatei
- count=n: Kopiert nur n Eingabeblöcke.

Als Blockgröße wird logischerweise, der durch bs, ibs, bzw. obs angegeben Wert genutzt.

Eine weitere wichtige Option ist conv=Key. Wenn diese Option angegeben ist, wird die Eingabedatei entsprechend durch das mit Key angegeben Schlüsselwort in die Ausgabedatei konvertiert. Als Key können auch mehrere Schlüsselwörter, durch Kommata getrennt angeben werden.

Unter anderem stehen dem Benutzer dabei folgenden Schlüsselwörter zur Verfügung:

- block/unblock
  Es gibt Datensätze fester Länge und es gibt Datensätze mit variabler Länge, deren Ende durch einen Zeilenumbruch markiert ist. Das Schlüsselwort block füllt einen Datensatz, der kleiner als cbs-Bytes ist mit Leerzeilen auf, bis die entsprechende Datensatzlänge erreicht ist. Somit wandelt block Datensätze variabler Länge in Datensätze mit fester Länge um. Entsprechend entfernt unblock die nachfolgenden Leerzeilen und wandelt somit Datensätze mit fester Länge in Datensätze mit variabler Länge um.
- lcase
  Sämtliche Großbuchstaben werden in Kleinbuchstaben umgewandelt
- ucase
  Sämtliche Kleinbuchstaben werden in Großbuchstaben umgewandelt
- noerror
  Die Verarbeitung wird auch nach einem Fehler fortgesetzt.

#### 3.4 which

Wenn Sie auf der Shell einen Befehl eingeben, werden der Reihe nach alle Verzeichnisse in $PATH nach diesem Befehl durchsucht. Nachdem der Befehl in einem Verzeichnis gefunden wurde, wird die Suche abgebrochen. Dabei kann allerdings das Problem auftreten, dass Sie ein anderes Kommando meinen, das sich in einem anderen Verzeichnis befindet. Um heraus zufinden, wo sich nun das Programm befindet, das ausgeführt wird, gibt es das Werkzeug which.

which durchsucht alle Verzeichnisse, die in der Umgebungsvariablen $PATH aufgelistet sind, nach einer ausführbaren Datei mit dem angegebenen Namen:

user@linux $ which man /usr/bin/man

Auf diese Weise finden Sie heraus, ob das seltsame Verhalten eines Kommandos dadurch verursacht wird, dass ein anderes Programm in ein Verzeichnis geraten ist, das sich im Pfad weiter vorne befindet:

user@linux $ man ls cat: ls: No such file or directory user@linux $ which man /usr/local/bin/man

Hier ist ein Programm namens man in dem Verzeichnis /usr/local/bin, das im Suchpfad vor dem Verzeichnis /usr/bin steht, in dem sich das gewünschte Kommando man befindet. Durch den Aufruf:

user@linux $ /usr/bin/man ls

können Sie jetzt das richtige Programm aufrufen.

which" kann zudem nützlich sein, um festzustellen, ob ein bestimmtes Programm vorhanden ist ohne dieses Programm gleich ausführen zu müssen.