Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
Einleitung
1 Linux
2 Ubuntu Linux
3 Von »Warty« bis »Edgy«
4 Optimale Nutzung der beiliegenden DVDs
5 Ubuntu erleben – Die Installation
6 Erste Schritte
7 Ubuntu
8 Kubuntu
9 Xubuntu
10 Edubuntu
11 Hardwarekonfiguration
12 Ubuntu und aktuelle Hardware
13 Software
14 Programme installieren
15 Programmierung und Design
16 Migration von Windows zu Ubuntu
17 Netzwerktechnik
18 Kompilieren und Optimieren
19 Das System im Detail
20 Sicherheit
21 Virtualisierung
22 Übersicht: Software für (K)Ubuntu
23 Wo bekomme ich weitere Hilfe?
24 Befehlsreferenz Ubuntu Linux
A Häufig gestellte Fragen
B Glossar
C Mark Shuttleworth
D Deutsche Übersetzung der GPL
Stichwort

Download:
- ZIP, ca. 29,4 MB
Buch bestellen
Ihre Meinung?

Spacer
 <<   zurück
Ubuntu GNU/Linux von Marcus Fischer
Grundlagen, Anwendung, Administration
Buch: Ubuntu GNU/Linux

Ubuntu GNU/Linux
2., akt. und erw. Aufl., mit 2 DVDs
913 S., 39,90 Euro
Galileo Computing
ISBN 978-3-89842-848-4
gp 24 Befehlsreferenz Ubuntu Linux
  gp 24.1 Überblick
  gp 24.2 Die Befehle im Detail
    gp 24.2.1 Dateiorientierte Kommandos
    gp 24.2.2 Verzeichnisorientierte Kommandos
    gp 24.2.3 Verwaltung von Benutzern und Gruppe
    gp 24.2.4 Programm- und Prozessverwaltung
    gp 24.2.5 Speicherplatzinformationen
    gp 24.2.7 Archivierung und Backup
    gp 24.2.9 System-Kommandos
    gp 24.2.11 Netzwerkbefehle
    gp 24.2.12 Benutzerkommunikation
    gp 24.2.13 Bildschirm- und Terminalkommandos
    gp 24.2.14 Online-Hilfen
    gp 24.2.15 Alles rund um PostScript-Kommandos
    gp 24.2.16 Sonstige Kommandos


Galileo Computing

24.2 Die Befehle im Detail  downtop


Galileo Computing

24.2.1 Dateiorientierte Kommandos  downtop

bzcat – Ausgabe von bzip2-komprimierten Dateien

Mit bzcat können Sie die Inhalte von bzip2-komprimierten Dateien ausgeben, ohne dass Sie hierbei die komprimierte Datei dekomprimieren müssen. Dies ist z. B. auch ein Grund, warum Sie mit einem Dateibrowser wie z. B. Nautilus den Inhalt einer komprimierten Datei sehen und sogar lesen können, obwohl Sie diese noch gar nicht dekomprimiert haben. Ansonsten funktioniert \mbox{bzcat} wie cat.

cat – Datei(en) nacheinander ausgeben

Mit diesem Kommando werden gewöhnlich Dateien ausgegeben. Geben Sie cat beim Aufruf keine Dateien zum Lesen als Argument mit, liest cat so lange aus der Standardeingabe, bis (Strg) + (D) (End of File) betätigt wurde.


Verwendung Bedeutung
cat file Gibt den Inhalt von file aus
cat file | kommando Gibt den Inhalt von file via Pipe an die Standardeingabe von kommando weiter
cat file1 file2 > file_all Dateien aneinander hängen
cat > file Schreibt alle Zeilen, die von der Tastatur eingegeben wurden, in die Datei file, bis (Strg) + (D) betätigt wurde

chgrp – Gruppe ändern

Mit chgrp ändern Sie die Gruppenzugehörigkeit einer Datei oder eines Verzeichnisses. Dieses Kommando bleibt somit nur dem Eigentümer einer Datei, eines Verzeichnisses oder dem Superuser vorbehalten. Als Eigentümer können Sie außerdem nur diejenigen Dateien oder Verzeichnisse einer bestimmten Gruppe zuordnen, der Sie selbst auch angehören.

Wollen Sie die Gruppenzugehörigkeit aller Dateien in einem Verzeichnis mit allen Unterverzeichnissen ändern, dann bietet sich hierzu die Option -R (für rekursiv) an.

cksum/md5sum/sum – Prüfsummen ermitteln

Mit diesen Funktionen errechnet man die CRC-Prüfsumme (cyclic redundancy check) und die Anzahl Bytes (Anzahl Bytes gilt nur für cksum) für eine Datei. Wird keine Datei angegeben, liest cksum diejenige aus der Standardeingabe, bis (Strg) + (D) betätigt wurde, und berechnet hieraus die Prüfsumme.

Diese Kommandos werden häufig eingesetzt um festzustellen, ob zwei Dateien identisch sind. So kann z. B. überprüft werden, ob eine Datei, die Sie aus dem Internet geladen haben, auch korrekt übertragen wurde. Voraussetzung hierfür ist natürlich, dass Sie die Prüfsumme der Quelle kennen. Häufig findet man die Anwendung einer MD5-Prüfsumme beim Herunterladen von Ubuntu-ISO-Abbildern. Ein anderer Anwendungsfall wäre das Überprüfen auf Virenbefall. Hiermit kann ermittelt werden, ob sich jemand an einer Datei zu schaffen gemacht hat, beispielsweise:

user$ cksum data.conf 
2935371588 51 data.conf 
user$ cksum data.conf 
2935371588 51 data.conf 
user$ echo Hallo >> data.conf 
user$ cksum data.conf 
966396470 57 data.conf

Im obigen Beispiel sieht man eine Konfigurationsdatei data.conf, bei der zweimal mit cksum derselbe Wert (nur zur Demonstration) berechnet wurde. Kurz darauf wurde am Ende dieser Datei ein Text angehängt und erneut cksum ausgeführt. Jetzt erhalten Sie eine andere Prüfsumme. Voraussetzung dafür, dass dieses Prinzip funktioniert, ist natürlich auch eine Datei oder Datenbank, die solche Prüfsummen zu den entsprechenden Dateien speichert. Dabei können Sie auch zwei Dateien auf einmal eingeben, um die Prüfsummen zu vergleichen:

user$ cksum data.conf data.conf~bak 
966396470 57 data.conf 
2131264154 10240 data.conf~bak

cksum ist gegenüber sum zu bevorzugen, da diese Version neuer ist und auch dem POSIX.2-Standard entspricht. Beachten Sie allerdings, dass alle drei Versionen zum Berechnen von Prüfsummen (sum, cksum und md5sum) untereinander inkompatibel sind und andere Prüfsummen als Ergebnis berechnen:

user$ sum data.conf 
20121     1 
user$ cksum data.conf 
966396470 57 data.conf 
user$ md5sum data.conf 
5a04a9d083bc0b0982002a2c8894e406  data.conf

Noch ein beliebter Anwendungsfall von md5sum:

user$ cd /bin; md5 'ls -R /bin' | md5

Wenn sich jetzt jemand am Verzeichnis /bin zu schaffen gemacht hat, merkt man dies relativ schnell. Am besten lässt man hierbei einen cron- Job laufen und sich gegebenenfalls täglich per E-Mail benachrichtigen.

chmod – Zugriffsrechte ändern

Mit chmod setzen oder verändern Sie die Zugriffsrechte auf Dateien oder Verzeichnisse. Die Benutzung von chmod ist selbstverständlich nur dem Dateieigentümer und dem Superuser gestattet. Die Bedienung von chmod dürfte jedem Systemadministrator geläufig sein, weil es ein sehr häufig verwendetes Kommando ist. chmod kann sehr flexibel eingesetzt werden. Man kann z. B. einen numerischen Wert verwenden:[Ggf. ist dem jeweiligen Befehl ein sudo voranzustellen, da man für die Veränderung von Systemdateirechten als Administrator operieren muss.]

user$ chmod 755 file

oder

user$ chmod 0755 file

Einfacher anzuwenden ist chmod über eine symbolische Angabe wie:

user$ chmode u+x file

Hier bekommt der User (u; Eigentümer) der Datei file das Ausführrecht (+x) erteilt.

user$ chmod g-x file

Damit wurde der Gruppe (g) das Ausführrecht entzogen (-x). Wollen Sie hingegen allen Teilnehmern (a) ein Ausführrecht erteilen, dann funktioniert dies so:

user$ chmod a+x file

Mit chmod können Sie auch die Spezialbits setzen (SUID, SGUID oder Sticky). Wollen Sie z. B. für eine Datei das setuid-Bit (Set-User-ID) setzen, funktioniert dies folgendermaßen:

user$ chmod 4744 file

Das setgid-Bit (Set Group ID) hingegen setzen Sie mit »2xxx«. Zu erwähnen ist auch die Option -R, mit der Sie ein Verzeichnis rekursiv durchlaufen und alle Dateien, die sich darin befinden, entsprechend den neu angegebenen Rechten ändern.

chown – Eigentümer ändern

Mit chown können Sie den Eigentümer von Dateien oder Verzeichnissen ändern. Als neuen Eigentümer kann man entweder den Loginnamen oder die User-ID angeben. Name oder Zahl müssen selbstverständlich in der Datei /etc/passwd vorhanden sein. Dieses Kommando kann wiederum nur vom Eigentümer selbst oder dem Superuser aufgerufen und auf Dateien bzw. Verzeichnisse angewendet werden.

user$ chown john file1 file2

Hier wird der User »john« Eigentümer der Datei file1 und file2. Wollen Sie auch hier ein komplettes Verzeichnis mitsamt den Unterverzeichnissen erfassen, so kann wieder die Option –R verwendet werden. Wollen Sie sowohl den Eigentümer als auch die Gruppe einer Datei ändern, nutzen Sie folgende Syntax:

user$ chown john:user file1 file2

cmp – Dateien miteinander vergleichen

Mit der Funktion cmp vergleichen Sie zwei Dateien Byte für Byte miteinander und erhalten die dezimale Position und Zeilennummer vom ersten Byte zurück, bei dem sich beide Dateien unterscheiden. cmp vergleicht auch Binärdateien. Sind beide Dateien identisch, erfolgt keine Ausgabe.

user$ cmp out.txt textfile.txt 
out.txt textfile.txt differieren: Byte 52, Zeile 3.

comm – zwei sortierte Textdateien vergleichen

Mit comm vergleichen Sie zwei sortierte Dateien und geben die gemeinsamen und die unterschiedlichen Zeilen jeweils in Spalten aus, indem die zweite und dritte Spalte von einem bzw. zwei Tabulatorvorschüben angeführt werden.

user$ comm [-123] file1 file2

Die erste Spalte enthält die Zeilen, die nur in der Datei file1 enthalten sind. Die zweite Spalte hingegen beinhaltet die Zeilen, die in der zweiten Datei file2 enthalten sind, und die dritte Spalte die Zeilen, die in beiden Dateien enthalten sind.

user$ cat file1.txt 
# wichtige Initialisierungsdatei 
# noch eine Zeile 
Hallo 
user$ cat file2.txt 
# wichtige Initialisierungsdatei 
# noch eine Zeile 
Hallo 
user$ comm file1.txt file2.txt 
                # wichtige Initialisierungsdatei 
                # noch eine Zeile 
                Hallo 
user$ echo "Neue Zeile" >> file2.txt 
user$ comm file1.txt file2.txt 
                # wichtige Initialisierungsdatei 
                # noch eine Zeile 
                Hallo 
        Neue Zeile 
user$ comm –3 file1.txt file2.txt 
        Neue Zeile

In der letzten Zeile ist außerdem zu sehen, wie Sie mit dem Schalter

–3 die Ausgabe der dritten Spalte ganz abschalten, um nur die Differenzen beider Dateien zu erkennen. comm arbeitet zeilenweise, weshalb hier keine Vergleiche mit binären Dateien möglich sind. Weitere Schalterstellungen und ihre Bedeutung sind:


Verwendung Bedeutung
–23 file1 file2 Es werden nur Zeilen ausgegeben, die in file1 vorkommen.
–123 file1 file2 Es wird keine Ausgabe erzeugt.

cp – Dateien kopieren

Den Befehl cp zum Kopieren von Dateien und Verzeichnissen haben Sie schon des Öfteren verwendet, daher hier nur noch eine Auflistung der gängigsten Verwendungen.


Verwendung Bedeutung
cp file newfile Es wird mit newfile eine Kopie von file erzeugt.
cp -p file newfile newfile erhält dieselben Zugriffsrechte, Eigentümer und Zeitstempel.
cp -r dir newdir Es wird ein komplettes Verzeichnis rekursiv (-r) kopiert.
cp file1 file2 file3 dir Es werden mehrere Dateien in ein Verzeichnis dir kopiert.

csplit – Zerteilen von Dateien

Mit csplit können Sie eine Datei in mehrere Teile aufteilen. Als Trennstelle kann hierbei ein Suchmuster, also auch ein regulärer Ausdruck angegeben werden. Dabei werden aus einer Eingabedatei mehrere Ausgabedateien erzeugt, deren Inhalt vom Suchmuster abhängig gemacht werden kann. Ein Beispiel:

user$ csplit Kapitel20.txt /Abschnitt 1/ \ 
/Abschnitt 2/ /Abschnitt 3/

Hier wird das Kapitel20.txt in vier Teile aufgeteilt. Zunächst vom Anfang bis zum »Abschnitt 1«, als Nächstes von »Abschnitt 1« bis

»Abschnitt 2«, dann »Abschnitt 2« bis »Abschnitt 3« und zu guter Letzt

»Abschnitt 3« bis »Abschnitt 4«. Hier können Sie allerdings auch einzelne Zeilen angeben, ab denen Sie eine Datei teilen wollen:

user$ csplit -f Abschnitt Kapitel20.txt 20 40

Hier haben Sie mit der Option -f veranlasst, dass statt eines Dateinamens wie »xx01«, »xx02«, ... »xx99« eine Datei wie »Abschnitt01«, »Abschnitt02« usw. erzeugt wird. Hier zerteilen Sie die Datei Kapitel20.txt in drei Dateien: »Abschnitt01« (Zeile

1 – 20), »Abschnitt02« (Zeile 21– 40) und »Abschnitt03« (Zeile 41 bis zum Ende). Sie können mit {n{ am Ende auch angeben, dass ein bestimmter Ausdruck n-mal angewendet werden soll. Beispiel:

user$ csplit -k /var/spool/mail/$LOGNAME /^From / {100}

Hier zerteilen Sie in Ihrer Mailbox die einzelnen E-Mails in die einzelnen Dateien »xx01«, »xx02«, ...»xx99«. Jeder Brief einer E-Mail im mbox-Format beginnt mit »From«, weshalb dies als Trennzeichen für die einzelnen Dateien dient. Weil Sie wahrscheinlich nicht genau wissen, wie viele Mails in Ihrer Mailbox liegen, können Sie durch die Angabe einer relativ hohen Zahl zusammen mit der Option -k erreichen, dass alle Mails getrennt und nach einem eventuell vorzeitigen Scheitern die bereits erzeugten Dateien nicht wieder gelöscht werden.

cut – Zeichen oder Felder aus Dateien schneiden

Mit cut schneiden Sie bestimmte Teile aus einer Datei heraus. Dabei liest cut von der angegebenen Datei und gibt die Teile auf dem Bildschirm aus, die Sie als gewählte Option und per Wahl des Bereichs verwendet haben. Ein Bereich ist eine durch Kommata getrennte Liste von einzelnen Zahlen bzw. Zahlenbereichen. Diese Zahlenbereiche werden in der Form »a–z« angegeben. Wird a oder z weggelassen, so wird hierzu der Anfang bzw. das Ende einer Zeile verwendet.

diff – Vergleichen zweier Dateien

diff vergleicht den Inhalt von zwei Dateien. Da diff zeilenweise vergleicht, sind keine binären Dateien erlaubt. Ein Beispiel:

user$ diff file1.txt file2.txt 
2a3 
> neueZeile

Hier wurden die Dateien file1.txt und file2.txt miteinander verglichen. Die Ausgabe »2a3« besagt lediglich, dass Sie in der Datei file1.txt zwischen der Zeile 2 und 3 die Zeile »neueZeile« einfügen (a = append) müssten, damit die Datei exakt mit der Datei file2.txt übereinstimmt. Ein weiteres Beispiel:

user$ diff file1.txt file2.txt 
2c2 
< zeile2 
--- 
> zeile2 wurde verändert

Hier bekommen Sie mit »2c2« die Meldung, dass die zweite Zeile unterschiedlich (c = change) ist. Die darauf folgende Ausgabe zeigt auch den Unterschied dieser Zeile an. Eine sich öffnende spitze Klammer (<) zeigt file1.txt und die sich schließende spitze Klammer bezieht sich auf file2.txt. Und eine dritte Möglichkeit, die Ihnen diff meldet, wäre:

user$ diff file1.txt file2.txt 
2d1 
< zeile2

Hier will Ihnen diff sagen, dass die zweite Zeile in file2.txt fehlt (d = delete) bzw. gelöscht wurde. Daraufhin wird die entsprechende Zeile auch ausgegeben. Natürlich beschränkt sich die Verwendung von diff nicht ausschließlich auf Dateien. Mit der Option

-r können Sie ganze Verzeichnisse miteinander vergleichen:

user$ diff -r dir1 dir2

diff3 – Vergleich von drei Dateien

Die Funktion entspricht etwa der von diff, nur dass Sie hierbei drei Dateien Zeile für Zeile miteinander vergleichen können. Folgendes besagt die Ausgabe von diff3:

user$ diff3 file1 file2 file3

Ausgabe Bedeutung
==== Alle drei Dateien sind unterschiedlich.
====1 file1 ist unterschiedlich.
====2 file2 ist unterschiedlich.
====3 file3 ist unterschiedlich.

dos2unix – Dateien umwandeln

Mit dos2unix können Sie Textdateien vom DOS- in das UNIX-Format umwandeln. Alternativ gibt es außerdem noch den Befehl mac2unix, mit dem Sie Textdateien vom MAC- in das UNIX-Format konvertieren können.

user$ dos2unix file1.txt file2.txt 
dos2unix: converting file file1.txt to UNIX format… 
dos2unix: converting file file2.txt to UNIX format…

expand – Tabulatoren in Leerzeichen umwandeln

expand ersetzt alle Tabulatoren einer Datei durch eine Folge von Leerzeichen. Standardmäßig sind dies acht Leerzeichen, allerdings kann dieser Wert explizit mit einem Schalter verändert werden. Wollen Sie z. B., dass alle Tabulatorzeichen durch nur drei Leerzeichen ersetzt werden, erreichen Sie dies folgendermaßen:

user$ expand –3 file

Allerdings erlaubt expand nicht das vollständige Entfernen von Tabulatorenzeichen – sprich ein Schalter mit –0 gibt eine Fehlermeldung zurück. Hierzu können Sie alternativ z. B. das Kommando tr verwenden.

file – den Inhalt von Dateien analysieren

Das Kommando file versucht, die Art oder den Typ einer von Ihnen angegebenen Datei zu ermitteln. Hierzu führt file einen Dateisystemtest, einen Kennzahlentest und einen Sprachtest durch. Je nach Erfolg wird eine entsprechende Ausgabe des Tests vorgenommen. Der Dateisystemtest wird mithilfe des Systemaufrufes stat(2) ausgeführt. Dieser Aufruf erkennt viele Arten von Dateien. Der Kennzahlentest wird anhand von festgelegten Kennzahlen (meist enthalten in der Datei /etc/magic) durchgeführt. In dieser Datei steht beispielsweise geschrieben, welche Bytes einer Datei zu untersuchen sind und auf welches Muster man dann den Inhalt dieser Datei zurückführen kann. Am Ende erfolgt noch ein Sprachtest. Hier versucht file, eine Programmiersprache anhand von Schlüsselwörtern zu erkennen.

user$ cat > hallo.c 
#include <stdio.h> 
int main(void) { 
   printf("Hallo Welt{n}"); 
   return 0; 
{ 
STRG + D 
user$ file hallo.c 
hallo.c: ASCII C program text 
user$ gcc -o hallo hallo.c 
user$ ./hallo 
Hallo Welt 
user$ file hallo 
hallo: ELF 32-bit LSB executable, Intel 80386, 
version 1 (SYSV), for GNU/Linux 2.2.0, dynamically 
linked (uses shared libs), not stripped

find – Suchen nach Dateien

Zum Suchen nach Dateien wird häufig auf das Kommando find zurückgegriffen. find durchsucht eine oder mehrere Verzeichnisebenen nach Dateien mit einer bestimmten vorgegebenen Eigenschaft. Die Syntax zu find:

find [Verzeichnis] [-Option ...] [-Test ...] \ 
[-Aktion ...]

Die Optionen, Tests und Aktionen können Sie mit Operatoren zusammenfassen. Dabei wertet find jede Datei in den Verzeichnissen hinsichtlich der Optionen, Tests und Aktionen von links nach rechts aus, bis ein Wert unwahr ist oder die Kommandozeilenargumente zu Ende sind. Wenn kein Verzeichnis angegeben wird, wird das aktuelle Verzeichnis verwendet. Wenn keine Aktion angegeben ist, wird meistens -print (abhängig von einer eventuell angegebenen Option) für die Ausgabe auf dem Bildschirm verwendet. Hierzu einige Beispiele.

Alle Verzeichnisse und Unterverzeichnisse ab dem Heimverzeichnis ausgeben:

user$ find $HOME

Gibt alle Dateien mit dem Namen »kapitel« aus dem Verzeichnis (und dessen Unterverzeichnissen) /dokus aus:

user$ find /dokus -name kapitel

Gibt alle Dateien aus dem Verzeichnis (und dessen Unterverzeichnissen) dokus mit dem Namen »kap...« aus, bei denen »you« der Eigentümer ist:

user$ find /dokus /usr -name 'kap*' -user you

Damit durchsuchen Sie ab dem Wurzelverzeichnis nach einem Verzeichnis

(-type d = directory) mit dem Namen »dok, ...« und geben dies auf dem Bildschirm aus:

user$ find / -type d -name 'dok*'

Sucht leere Dateien (size = 0) und löscht diese nach einer Rückfrage (-ok):

user$ find / -size 0 -ok rm {} \;

Gibt alle Dateien ab dem Wurzelverzeichnis aus, die in den letzten sieben Tagen verändert wurden:

user$ find / -mtime –7

fold – einfaches Formatieren von Dateien

Mit fold können Sie Textdateien ab einer bestimmten Zeilenlänge umbrechen. Standardmäßig sind hierbei 80 Zeichen pro Zeile eingestellt. Da fold die Bildschirmspalten und nicht die Zeichen zählt, werden auch Tabulatorzeichen korrekt behandelt. Wollen Sie etwa eine Textdatei nach

50~Zeichen umbrechen, gehen Sie folgendermaßen vor:

user$ fold –50 Kap003.txt 
… 
Sicherlich erscheint Ihnen das Ganze nicht sonderl 
ich elegant oder sinnvoll, aber bspw. in Schleifen 
eingesetzt, können Sie hierbei hervorragend alle A 
rgumente der Kommandozeile zur Verarbeitung von Op 
tionen heranziehen. Als Beispiel ein kurzer theoreti 
scher Code-Ausschnitt, wie so etwas in der Praxis 
realisiert werden kann.

Allerdings kann man an der Ausgabe erkennen, dass einfach die Wörter abgeschnitten und in der nächsten Zeile fortgeführt werden. Wollen Sie dies unterbinden, können Sie die Option -s verwenden. Damit findet der Zeilenumbruch beim letzten Leerzeichen der Zeile statt, wenn in der Zeile ein Leerzeichen vorhanden ist.

user$ fold -s –50 Kap003.txt 
… 
Sicherlich erscheint Ihnen das Ganze nicht 
sonderlich elegant oder sinnvoll, aber bspw. in 
Schleifen eingesetzt, können Sie hierbei 
hervorragend alle Argumente der Kommandozeile zur 
Verarbeitung von Optionen heranziehen. Als Beispiel 
ein kurzer theoretischer Code-Ausschnitt, wie so 
etwas in der Praxis realisiert werden kann.

Ein recht typischer Anwendungsfall ist es, Text für eine E-Mail zu formatieren:

user$ fold -s –72 text.txt | \ 
mail -s "Betreff" name@host.de

head – Anfang einer Datei ausgeben

Mit der Funktion head geben Sie immer die ersten Zeilen einer Datei auf dem Bildschirm aus. Standardmäßig werden dabei die ersten zehn Zeilen ausgegeben. Wollen Sie selbst bestimmen, wie viele Zeilen vom Anfang der Datei ausgegeben werden sollen, können Sie dies explizit mit -n angeben:

user$ head –5 file

Es erscheinen die ersten fünf Zeilen von file auf dem Bildschirm.

less – Datei(en) seitenweise ausgeben

Mit less geben Sie eine Datei seitenweise auf dem Bildschirm aus. Der Vorteil von less gegenüber more ist, dass Sie mit less auch zurückblättern können. Da less von der Standardeingabe liest, ist so auch eine Umleitung eines anderen Kommandos mit einer Pipe möglich. Mit der Leertaste blättern Sie eine Seite weiter und mit (B) können Sie jeweils eine Seite zurückblättern. Die meisten less-Versionen bieten außerdem das Scrollen nach unten bzw. oben mit den Pfeiltasten an. Mit (Q) wird less beendet. less bietet außerdem eine Unmenge von Optionen und weiterer Features an, über die Sie sich durch Drücken von (H) informieren können.

ln – Links auf eine Datei erzeugen

Wenn eine Datei erzeugt wird, werden im Verzeichnis der Name, ein Verweis auf eine Inode, die Zugriffsrechte, der Dateityp und gegebenenfalls die Anzahl der belegten Blöcke eingetragen. Mit ln wiederum wird ein neuer Eintrag im Verzeichnis abgelegt, der auf die Inode einer existierenden Datei zeigt. Man spricht dabei von einem Hardlink. Er wird standardmäßig ohne weitere Angaben angelegt. Es ist allerdings nicht möglich, diese Hardlinks über Dateisystemgrenzen hinweg anzulegen. Hierzu müssen Sie einen symbolischen Link mit der Option -s erzeugen:

user$ ln -s filea fileb

Damit haben Sie einen symbolischen Link auf die bestehende Datei filea mit dem Namen fileb angelegt. Wollen Sie hingegen einen Hardlink auf die bestehende Datei filea mit dem Namen fileb anlegen, so gehen Sie wie folgt vor:

user$ ln filea fileb

ls – Verzeichnisinhalt auflisten

Mit ls wird der Inhalt eines Verzeichnisses auf dem Dateisystem angezeigt. Wer sich den Inhalt eines Verzeichnisses inklusive versteckter Dateien anzeigen lassen möchte, verwendet folgende Optionen:

user$ ls -lah <Verzeichnisname>

more – Datei(en) seitenweise ausgeben

more wird genauso eingesetzt wie less, und zwar zum seitenweisen Lesen von Dateien. Allerdings bietet less gegenüber more erheblich mehr Features und Funktionalitäten an.

mv – Datei(en) verschieben oder

umbenennen Mit mv können Sie eine oder mehrere Dateien bzw. Verzeichnisse verschieben oder umbenennen.


Verwendung Bedeutung
mv file filenew Eine Datei umbenennen
mv file dir Eine Datei in ein Verzeichnis verschieben
mv dir dirnew Ein Verzeichnis in ein anderes Verzeichnis verschieben

nl – Datei mit Zeilennummer ausgeben

Mit nl geben Sie die Zeilen einer Datei mit deren Nummer auf dem Bildschirm aus. Dabei ist nl nicht nur ein »dummer« Zeilenzähler, sondern kann die Zeilen einer Seite auch in einen Header, einen Body und einen Footer unterteilen und in unterschiedlichen Stilen nummerieren, zum Beispiel:

user$ ls | nl -w3 -s') ' 
  1) abc 
  2) bin 
  3) cxoffice 
  4) Desktop 
  5) Documents 
  6) file1.txt 
…

Wenn Sie mehrere Dateien verwenden, beginnt die Nummerierung allerdings nicht mehr neu, dann werden mehrere Dateien wie eine behandelt. Die Zeilennummer wird nicht zurückgesetzt. Ein weiteres Beispiel:

user$ nl hallo.c -s' : ' > hallo_line 
user$ cat hallo_line 
     1 : #include <stdio.h> 
 
     2 : int main(void) { 
     3 :    printf("Hallo Welt{n}"); 
     4 :    return 0; 
     5 : }

Mit der Option -s (optional) geben Sie das Zeichen an, das zwischen der Zeilennummer und der eigentlichen Zeile stehen soll.

od – Datei(en) hexadezimal bzw. oktal ausgeben

od liest von der Standardeingabe eine Datei ein und gibt diese – Byte für Byte – formatiert und kodiert auf dem Bildschirm aus. Standardmäßig wird dabei die siebenstellige Oktalzahl in je acht Spalten zu zwei Bytes verwendet:[Aus Gründen der Darstellung wurde eine Spalte im Listing weggelassen.]

user$ od file1.txt 
0000000 064546 062554 035061 062572 066151 030545 
0000020 030545 075072 064545 062554 005062 064546 
0000040 062572 066151 031545 000012 
0000047

Jede Zeile enthält in der ersten Spalte die Positionsnummer in Bytes vom Dateianfang an. Mit der Option -h erfolgt die Ausgabe in hexadezimaler und mit -c in ASCII-Form.

rm – Dateien und Verzeichnisse löschen

Mit dem Kommando rm können Sie Dateien und Verzeichnisse löschen.


Verwendung Bedeutung
rm datei Löscht eine Datei
rm dir Löscht ein leeres Verzeichnis
rm -r dir Löscht ein Verzeichnis rekursiv
rm -rf dir Erzwingt rekursives Löschen (ohne Warnung)

sort – Dateien sortieren

Gewöhnlich wird sort zum Sortieren einzelner Zeilen einer Datei oder der Standardeingabe verwendet. sort kann auch Dateien daraufhin überprüfen, ob diese sortiert sind, und mehrere sortierte oder auch unsortierte Dateien zu einer sortierten zusammenfügen. Ohne Angabe einer Option sortiert sort eine Datei zeilenweise in alphabetischer Reihenfolge:

user$ sort kommandos.txt 
a2ps – Textdatei umwandeln nach Postscript 
accept – Druckerwarteschlange empfangsbereit setzen 
afio – Ein cpio mit zusätzlicher Komprimierung 
alias – Kurznamen für Kommandos vergeben 
… 
user$ ls | sort 
abc 
bin 
cxoffice 
Desktop 
Documents 
…

Häufig verwendete Optionen zum Sortieren, die mit sort benutzt werden:


Option Bedeutung
-n Sortiert eine Datei numerisch
-f Unterscheidet nicht zwischen Klein- und Großbuchstaben
-r Sortiert nach Alphabet in umgekehrter Reihenfolge
-n -r Sortiert numerisch in umgekehrter Reihenfolge
-c Überprüft, ob die Dateien bereits sortiert sind. Wenn nicht, wird mit einer Fehlermeldung und dem Rückgabewert 1 abgebrochen.
-u Gibt keine doppelt vorkommenden Zeilen aus

Alternativ gibt es hierzu noch das Kommando tsort, das Dateien topologisch sortiert.

split – Dateien in mehrere Teile zerlegen

Mit split teilen Sie eine Datei in mehrere Teile auf. Ohne Angabe einer Option wird eine Datei in je 1000 Zeilen aufgeteilt. Die Ausgabe erfolgt in Dateien mit »x…« oder einem entsprechenden Präfix, wenn eines angegeben wurde:

user$ split –50 kommandos.txt 
user$ ls x* 
xaa  xab  xac  xad  xae

Die Datei können Sie folgendermaßen wieder zusammensetzen:

user$ for file in `ls x* | sort`; do cat $file >> \ 
new.txt; done

Hier wurde z. B. die Textdatei kommandos.txt in je 50-zeilige Häppchen aufgeteilt. Wollen Sie den Namen der neu erzeugten Datei verändern, gehen Sie wie folgt vor:

user$ split –50 kommandos.txt kommandos 
user$ ls komm* 
kommandosaa  kommandosab  kommandosac 
kommandosad  kommandosae  kommandos.txt

Das Kommando split wird häufig eingesetzt, um große Dateien zu splitten, die nicht auf ein einzelnes Speichermedium passen.

tac – Dateien rückwärts ausgeben

Vereinfacht ausgedrückt ist tac wie cat (daher auch der rückwärts geschriebene Kommandoname), nur dass tac die einzelnen Zeilen rückwärts ausgibt. Es wird somit zuerst die letzte Zeile ausgegeben, dann die vorletzte usw. bis zur ersten Zeile.

user$ cat file1.txt 
file1:zeile1 
file1:zeile2 
file2:zeile3 
user$ tac file1.txt 
file2:zeile3 
file1:zeile2 
file1:zeile1

tail – Ende einer Datei ausgeben

tail gibt die letzten Zeilen (standardmäßig, ohne spezielle Angaben die letzten zehn) einer Datei aus.

user$ tail –3 kommandos.txt 
write – Nachrichten an andere Benutzer verschicken 
zcat – Ausgabe von gunzip-komprimierten Dateien 
zip/unzip – (De-) Komprimieren von Dateien

Hier gibt tail die letzten drei Zeilen der Datei kommandos.txt aus. Wollen Sie eine Datei ab einer bestimmten Zeile ausgeben lassen, gehen Sie wie folgt vor:

user$ tail +100 kommandos.txt

Hier werden alle Zeilen ab Zeile 100 ausgegeben. Wollen Sie tail wie tac verwenden, können Sie die Option -r verwenden:

user$ tail -r kommandos.txt

Hiermit wird die komplette Datei zeilenweise rückwärts, von der letzten zur ersten Zeile ausgegeben. Häufig verwendet wird auch die Option –f (follow), die immer wieder das Dateiende ausgibt. Dadurch kann man eine Datei beim Wachsen beobachten, da jede neu hinzugekommene Zeile angezeigt wird. Natürlich lässt sich diese Option nur auf eine Datei gleichzeitig anwenden. Eine beliebte Anwendung in diesem Zusammenhang ist das Beobachten der Syslog-Datei /var/log/messages:

user$ sudo tail -f /ver/log/messages

tee – Ausgabe duplizieren

Mit tee lesen Sie von der Standardeingabe und verzweigen die Ausgabe auf die Standardausgabe und -datei.

touch – Zeitstempel verändern

Mit touch verändern Sie die Zugriffs- und Änderungszeit einer Datei auf die aktuelle Zeit. Existiert eine solche Datei nicht, wird diese angelegt. Einige Optionen zu touch und ihre jeweilige Bedeutung:


Option Bedeutung
-a Damit ändern Sie nur die Zugriffszeit.
-c Falls eine Datei nicht existiert, wird diese trotzdem nicht erzeugt.
-m Ändert nur die Änderungszeit

tr – Zeichen ersetzen

Mit tr können Zeichen durch andere Zeichen ersetzt werden. Dies gilt auch für nicht druckbare Zeichen.

user$ tr str1 str2 file

Wird in der Datei file ein Zeichen aus »str1« gefunden, wird es durch das entsprechende Zeichen in »str2« ersetzt.

type – Kommandos klassifizieren

Mit type können Sie klassifizieren, wie die Shell den angegebenen Namen interpretieren würde, wenn Sie diesen in der Kommandozeile verwenden. type unterscheidet hierbei zwischen einem Alias, einem Builtin (Shell-Funktion), einer Datei oder einer Skriptfunktion.

user$ type ls echo ./hallo 
ls is aliased to `/bin/ls $LS_OPTIONS' 
echo is a shell builtin 
./hallo is ./hallo

umask – Dateierstellungsmaske ändern

Mit der Shell-Funktion umask setzen Sie eine Maske, mit der die Zugriffsrechte auf eine Datei bzw. auf Verzeichnisse direkt nach der Erzeugung durch einen von der Shell kontrollierten Prozess bestimmt werden. Die in der Maske gesetzten Bits werden bei den Zugriffsrechten für die neue Datei bzw. das Verzeichnis gelöscht (man sagt auch: Sie werden maskiert).

uniq – doppelte Zeilen nur einmal ausgeben

Mit uniq können Sie doppelt vorhandene Zeilen löschen. Voraussetzung ist allerdings, dass die Datei sortiert ist und die doppelten Zeilen direkt hintereinander folgen.

Beispielsweise:

user$ cat file1.txt 
file1:zeile1 
file1:zeile2 
file1:zeile2 
file2:zeile3 
user$ uniq file1.txt 
file1:zeile1 
file1:zeile2 
file2:zeile3

wc – Zeilen, Wörter und Zeichen zählen

Mit wc können Sie die Zeichen, Wörter und/oder Zeilen einer Datei zählen. Ohne spezielle Optionen wird eine Zeile mit den folgenden Zahlen ausgegeben:

user$ wc file1.txt 
 4  4 52 file1.txt

Die erste Spalte enthält die Anzahl der Zeilen, gefolgt von der Anzahl der Wörter und am Ende die Anzahl der Zeichen. Einzeln können Sie dies mit der Option -l (lines = Zeilen), -w (words = Wörter) und

-c (characters = Zeichen) ermitteln.

whereis – Suche nach Dateien

Mit dem Kommando whereis wird vorwiegend in wichtigen Pfaden (meistens allen Einträge in PATH) nach Binärdateien oder man-Dateien gesucht. whereis ist nicht so flexibel wie find, aber dafür erheblich schneller.

user$ whereis ls 
/bin/ls /usr/share/man/man1/ls.1.gz 
/usr/share/man/man1p/ls.1p.gz 
user$ whereis -b ls 
/bin/ls 
user$ whereis -m ls 
/usr/share/man/man1/ls.1.gz 
/usr/share/man/man1p/ls.1p.gz

Zuerst wurde der Pfad zum Programm ls ermittelt. Hierbei werden allerdings auch gleich die Pfade zu den man-Seiten mit ausgegeben. Wollen Sie nur den Pfad zum Binärprogramm erhalten, müssen Sie die Option

-b verwenden. Wünschen Sie nur den Pfad zu den man-Seiten, so verwenden Sie die Option -m, wie im Beispiel gesehen.

zcat, zless, zmore – Ausgabe von zip-Dateien

Alle drei Funktionen haben dieselbe Funktionsweise wie ihre Gegenstücke ohne

»z«, nur dass hiermit gzip- bzw. gunzip-komprimierte Dateien gelesen und ausgegeben werden können, ohne dass diese dekomprimiert werden müssen. Auf manchen Systemen gibt es mit zgrep auch noch eine entsprechende grep-Version.


Galileo Computing

24.2.2 Verzeichnisorientierte Kommandos  downtop

basename – Dateianteil eines Pfadnamens

basename liefert den Dateinamen ohne den Pfadnamen zurück, indem dieser abgeschnitten wird. Geben Sie ein Suffix an, wird auch die Dateiendung abgeschnitten.

cd – Verzeichnis wechseln

Das Shell-Kommando cd wird zum Wechseln des aktuellen Verzeichnisses verwendet. Wird kein Verzeichnis angegeben, wird in das Heimverzeichnis gewechselt.

dirname – Verzeichnisanteil eines Pfadnamens

dirname ist das Gegenstück zu basename und gibt den Verzeichnisanteil zurück. Es wird hierbei also der Dateiname aus der absoluten Pfadangabe »ausgeschnitten«.

mkdir – ein Verzeichnis anlegen

Mit mkdir legen Sie ein leeres Verzeichnis an. Wollen Sie gleich beim Anlegen die Zugriffsrechte erteilen, können Sie dies mit der Option

-m vornehmen:

user$ mkdir -m 600 mydir

Wollen Sie ein neues Verzeichnis mitsamt Elternverzeichnissen anlegen, können Sie die Option -p verwenden:

user$ mkdir doku/neu/buch 
mkdir: kann Verzeichnis doku/neu/buch nicht anlegen: 
       Datei oder Verzeichnis nicht gefunden 
user$ mkdir -p doku/neu/buch

pwd – aktuelles Arbeitsverzeichnis ausgeben

Mit pwd lassen Sie das aktuelle Arbeitsverzeichnis ausgeben, in dem Sie sich gerade befinden.

rmdir – ein leeres Verzeichnis löschen

Mit der Funktion rmdir können Sie ein leeres Verzeichnis löschen. Nicht leere Verzeichnisse können Sie mit rm -r rekursiv löschen. Etwas, was rm -r allerdings nicht kann, ist Verzeichnisse zu löschen, für die kein Ausführrecht vorhanden ist. Dies ist logisch, weil rm mit der Option -r im Verzeichnis enthalten sein muss. rmdir hingegen verrichtet hierbei seine Arbeit klaglos:

user$ mkdir -m 600 mydir 
user$ rm -r mydir 
rm: kann nicht aus Verzeichnis . in mydir wechseln: 
    Keine Berechtigung 
user$ rmdir mydir

Galileo Computing

24.2.3 Verwaltung von Benutzern und Gruppe  downtop

exit, logout – eine Session (Sitzung) beenden

Mit beiden Befehlen beenden Sie eine Shell-Sitzung (eine Textkonsole bzw. ein Shell-Fenster). Gleiches würde man auch mit (Strg) + (D) erreichen.

finger – Informationen zu Benutzern abfragen

Mit finger können Sie detaillierte Informationen zu momentan angemeldeten Benutzern abfragen (ähnlich wie mit who, nur dass die Terminals nicht einzeln aufgelistet werden):

user$ finger 
Login     Name     Tty      Idle  Login Time 
hatt      Rainer Hattenhauer  *:0      Jan  2 10:42 
hatt      Rainer Hattenhauer   pts/1   Jan  2 11:19

Ohne irgendwelche Optionen gibt finger zu allen aktiven Benutzern eine Informationszeile aus. Geben Sie einen Benutzernamen ein, bekommen Sie eine detailliertere Auskunft (im Langformat):

user$ finger hatt 
Login: hatt       Name: Rainer Hattenhauer 
Directory: /home/hatt    Shell: /bin/bash 
On since Mon Jan  2 10:42 (CET) on :0 (messages off) 
On since Mon Jan  2 11:19 (CET) on pts/1 from :0.0 
No mail. 
No Plan.

Natürlich können Sie auch zu allen anderen aktiven Benutzern dieses Langformat mit der Option -l ausgeben lassen. Wollen Sie einen Benutzer auf einem entfernten System suchen, müssen Sie

»benutzername@hostname« für den Benutzer angeben.

groupadd etc. – Gruppenverwaltung

Eine neue Gruppe können Sie mit groupadd anlegen:

user$ sudo groupadd [-g GID] gruppenname

Die ID einer Gruppe (gid) können Sie mit groupmod verändern:

user$ sudo groupmod [-g neueGID] gruppenname

Eine Gruppe wieder löschen können Sie mit groupdel:

user$ sudo groupdel gruppenname

groups – Gruppenzugehörigkeit ausgeben

Um alle Gruppen eines Benutzers zu ermitteln, wird groups verwendet. Wird groups ohne Angabe eines bestimmten Benutzers ausgeführt, werden alle Gruppen des aktuellen Benutzers ausgegeben.

id – eigene Benutzer- und Gruppen-ID ermitteln

Mit id können Sie die User- und Gruppen-ID eines Benutzers ermitteln. Geben Sie keinen bestimmten Benutzer an, so werden die UID und GID des aktuellen Benutzers ermittelt und ausgegeben.

last – An- und Abmeldezeit eines Benutzers

Einen Überblick zu den letzten An- und Abmeldezeiten von Benutzern erhalten Sie mit last:

user$ last 
hatt pts/1  :0.0  Mon Jan  2 11:19   still logged in 
hatt pts/1  :0.0  Mon Jan  2 10:51 – 11:11  (00:20) 
wtmp begins Mon Jan  2 10:51:44 2006

Wollen Sie nur die Loginzeiten eines einzelnen Users ermitteln, so müssen Sie diesen als Argument angeben.

logname – Name des aktuellen Benutzers

Mit logname erhalten Sie den Benutzernamen, der von getty in der Datei /var/run/utmp gespeichert wird.

newgrp – Gruppenzugehörigkeit wechseln

Mit newgrp kann ein Benutzer während einer Sitzung in eine andere Gruppe wechseln (in der er ebenfalls Mitglied ist). Wird keine Gruppe als Argument verwendet, wird in eine Standardgruppe von /etc/passwd gewechselt. Als Argument wird der Gruppenname – wie dieser in /etc/group eingetragen ist – erwartet, nicht die Gruppen-ID.

passwd – Passwort ändern bzw. vergeben

Mit dem Kommando passwd können Sie die Passwörter aller Benutzer in der Datei /etc/passwd ändern. Damit hierbei wenigstens der Benutzer selbst (nicht root) die Möglichkeit hat, sein eigenes Passwort zu ändern, läuft passwd als SUID root. Damit hat der Anwender für kurze Zeit root-Rechte und kann somit sein Passwort ändern und darf in die Datei schreiben. Alle Passwörter darf nur root verändern, unter Ubuntu ist also die Voranstellung von sudo erforderlich:

user$ sudo passwd hatt 
Changing password for hatt. 
New password:******** 
Re-enter new password:******** 
Password changed

Wenn Sie mit root-Rechten arbeiten, haben Sie noch folgende Optionen, einen Benutzer mit den Passworteinstellungen zu verwalten:


Verwendung Bedeutung
passwd -l benutzername Den Benutzer sperren (-l = lock)
passwd -f benutzername Den Benutzer dazu zwingen, beim nächsten Anmelden das Passwort zu verändern
passwd -d benutzername Passwort des Benutzers löschen. Danach kann sich der Benutzer ohne Passwort anmelden.

useradd/adduser etc. – Benutzerverwaltung

Einen neuen Benutzer legen Sie mit useradd bzw. adduser an:

user$ sudo useradd testuser 
user$ sudo passwd testuser 
Changing password for testuser. 
New password:******** 
Re-enter new password:******** 
Password changed

Die Eigenschaften eines Users können Sie mit usermod modifizieren.

user$ sudo usermod -u 1235 -c "Test User" \ 
 -s /bin/bash -d /home/testdir testuser

Hier haben Sie z. B. einem User die ID 1235, den Kommentar bzw. Namen »Test User«, die Bash als Shell und als Verzeichnis /home/testdir zugewiesen. Hierzu gibt es noch eine Menge Optionen mehr, die Sie mit usermod einstellen können (siehe auch man-Seite zu usermod). Wollen Sie einen Benutzer wieder entfernen, können Sie dies mit userdel erreichen:

user$ sudo userdel testuser

Beim Löschen wird eventuell noch überprüft, ob sich in crontab ein Eintrag für diesen User befindet. Dies ist sinnvoll, da der cron-Daemon sonst unnötig ins Leere laufen würde.

who – eingeloggte Benutzer anzeigen

Mit dem Kommando who werden alle angemeldeten Benutzer mitsamt dem Namen, der Loginzeit und dem Terminal ausgegeben.

user$ who 
hatt     :0           Jan  2 10:42 
hatt     pts/1        Jan  2 11:19 (:0.0)

whoami – Namen des aktuellen Benutzers anzeigen

Mit whoami können Sie ermitteln, unter welchem Namen Sie gerade arbeiten. Dies wird oft verwendet, um zu überprüfen, ob man als root oder »normaler«

User arbeitet. Unter Ubuntu ist das Kommando freilich obsolet, da die Arbeit als Benutzer root eigentlich nicht vorgesehen ist.

user$ sudo whoami 
Password: 
root

Galileo Computing

24.2.4 Programm- und Prozessverwaltung  downtop

at – Zeitpunkt für Kommando festlegen

Mit dem Kommando at können Sie ein Kommando zum angegebenen Zeitpunkt ausführen lassen, auch wenn der Benutzer zu diesem Zeitpunkt nicht angemeldet ist.

Beispielsweise können Sie mit

user$ at 2130 -f myscript

das Skript »myscript« um 21:30 Uhr ausführen lassen. Natürlich lassen sich mehrere solcher zeitgesteuerten Kommandos einrichten. Jeder dieser at-Aufrufe wird an die at-Queue (atq) angehängt. Natürlich funktioniert dies auch mit Datum:

user$ at 2200 apr 21 -f myscript

So würde das Skript »myscript« am 21. April um 22 Uhr ausgeführt. Wollen Sie sich alle Aufträge der atq auflisten lassen, müssen Sie die Option -l verwenden:

user$ at -l

Wollen Sie den Status des Auftrags mit der Nummer 33 anzeigen lassen, geben Sie Folgendes ein:

user$ at -l 33

Soll dieser Auftrag gelöscht werden, so kann die Option -d verwendet werden:

user$ at -d 33

batch – Kommando später ausführen lassen

Mit batch lesen Sie Kommandos von der Kommandozeile, die zu einem späteren Zeitpunkt ausgeführt werden, sobald das System Zeit hat. Dies wird bei extrem belasteten Rechnern gern verwendet, wenn man das Kommando bzw. Skript zu einer Zeit ausführen lassen will, in der die Systemlast definitiv niedrig ist, und dies nicht nur zu vermuten ist. Die angegebenen Kommandos werden auch dann ausgeführt, wenn der Benutzer nicht angemeldet ist. Um batch auszuführen, muss auch hier der at-Daemon, der auch für das Kommando at verantwortlich ist, laufen.

user$ batch 
warning: commands will be executed using /bin/sh 
at> ls -l 
at> ./myscript 
at> sleep 1 
at> (Strg) + (D) 
job 1 at 2005–12–21 23:30

Das Ende der Kommandozeileneingabe von batch müssen Sie mit (Strg) + (D) angeben.

bg – Prozess im Hintergrund

fortsetzen Mit dem Kommando bg können Sie einen (z. B. mit (Strg) + (Z) ) angehaltenen Prozess im Hintergrund fortsetzen.

cron/crontab – Programme zeitgesteuert

ausführen Mit cron können Sie beliebig viele Kommandos automatisch in bestimmten Zeitintervallen ausführen lassen. Einmal pro Minute sieht dieser Dämon in einen Terminkalender (crontab) nach und führt gegebenenfalls darin enthaltene Kommandos aus.

fg – Prozess im Vordergrund

fortsetzen Mit dem Kommando fg können Sie einen (z. B. mit (Strg) + (Z) ) angehaltenen Prozess im Vordergrund fortsetzen.

jobs – Anzeigen im Hintergrund laufender Prozesse

Mit jobs wird eine Liste mit den aktuellen Jobs zurückgegeben. Neben der Jobnummer stehen bei jedem Job der Kommandoname, der Status und eine Markierung. Die Markierung »+« steht für den aktuellen Job, »-« für den vorhergehenden Job.

kill – Signale an Prozesse mit Nummer

senden Mit kill senden Sie den Prozessen durch Angabe der Prozessnummer ein Signal. Standardmäßig wird das Signal SIGTERM zum Beenden des Prozesses gesendet. Es lassen sich aber auch beliebige andere Signale senden. Das Signal wird dabei als Nummer oder als Name übermittelt. Einen Überblick über die möglichen Signalnamen erhalten Sie mit der Option

-l.

killall – Signale an Prozesse mit Namen

senden Der Name killall führt schnell in die Irre. Damit lassen sich nicht etwa alle Prozesse »killen«, sondern killall stellt eher eine Erleichterung für kill dar. Anstatt wie mit kill einen Prozess mit der Prozessnummer zu beenden bzw. ein Signal zu senden, kann mit killall der Prozessname verwendet werden. Was gerade bei unzählig vielen gleichzeitig laufenden Prozessen eine erhebliche Erleichterung darstellt, weil man hier nicht mühsam erst nach der Prozessnummer (z. B. mit dem Kommando ps) suchen muss. Ansonsten lässt sich killall ähnlich wie kill verwenden, nur dass der Signalname ohne das vorangestellte SIG angegeben wird. Eine Liste aller Signale erhalten Sie auch hier mit der Option -l.

user$ sleep 60 & 
[1] 5286 
user$ killall sleep 
[1]+  Beendet         sleep 60

nice – Prozesse mit anderer Priorität ausführen

Mit nice können Sie veranlassen, dass ein Kommando mit einer niedrigeren Priorität ausgeführt wird. Die Syntax lautet:

nice [-n] kommando [argumente]

Für n können Sie dabei eine Ziffer angeben, um wie viel die Priorität verändert werden soll. Der Standardwert, falls keine Angabe erfolgt, lautet 10 (-20 ist die höchste und 19 die niedrigste Priorität). Prioritäten höher als 0 darf ohnehin nur root starten. Häufig wird man das Kommando mit nice im Hintergrund starten wollen:

user$ nice find / -name document -print > \ 
/home/tmp/find.txt &

Hier wird mit find nach einer Datei »document« gesucht und die Ausgabe in die Datei find.txt geschrieben. Der Hintergrundprozess find wird dabei von nice mit einer niedrigen (10) Priorität gestartet. Dies stellt eine gängige Verwendung von nice dar.

nohup – Prozesse nach Abmelden fortsetzen

Mit nohup schützen Sie Prozesse vor dem HANGUP-Signal. Dadurch ist es möglich, dass ein Prozess im Hintergrund weiterlaufen kann, auch wenn sich ein Benutzer abmeldet. Ohne nohup würden sonst alle Prozesse einer Login-Shell des Anwenders durch das Signal SIGHUP beendet.

ps – Prozessinformationen anzeigen

ps ist wohl das wichtigste Kommando für Systemadministratoren, um an Informationen zu aktiven Prozessen zu gelangen (neben top). Rufen Sie ps ohne irgendwelche Argumente auf, werden Ihnen die zum jeweiligen Terminal gestarteten Prozesse aufgelistet. Zu jedem Prozess erhalten Sie die Prozessnummer (PID), den Terminal-Namen (TTY), die verbrauchte Rechenzeit (TIME) und den Kommandonamen (COMMAND). Aber neben diesen Informationen lassen sich über Optionen noch viele weitere Informationen entlocken. Häufig verwendet wird dabei der Schalter -e, womit Informationen zu allen Prozessen zu gewinnen sind (also nicht nur zum jeweiligen Terminal), und ebenso der Schalter -f, womit Sie noch vollständigere Informationen bekommen:

user$ ps -ef 
UID    PID  PPID  C STIME TTY    TIME CMD 
root     1     0  0 10:41 ?    00:00:00 init [2] 
root     2     1  0 10:41 ?    00:00:00 [migration/0] 
root     3     1  0 10:41 ?    00:00:00 [ksoftirqd/0] 
root     4     1  0 10:41 ?    00:00:00 [events/0] 
… 
hatt  19380 13264  0 15:15 pts/1  00:00:00 ps -ef

Mittlerweile beinhaltet das Kommando ps unglaublich viele Optionen, Näheres liefert die man-Seite von ps. Häufig sucht man in der Liste von Prozessen nach einem bestimmten. Diesen können Sie folgendermaßen

»herauspicken«:

user$ ps -ax | grep apache 
12444 ?  SNs    0:00 /usr/sbin/apache2 -k start -DSSL 
…

Durch die Verwendung der obigen Parameter wird zugleich auch die Prozessnummer geliefert. Dieselbe Funktion hat pgrep:

pgrep – Prozesse über ihren Namen finden

Sofern Sie die Prozessnummer eines Prozessnamens benötigen, ist pgrep das Kommando der Wahl.

user$ pgrep kamix 
3171

pgrep liefert zu jedem Prozessnamen die Prozessnummer, sofern ein entsprechender Prozess gerade aktiv ist und in der Prozessliste (ps) auftaucht.

pstree – Prozesshierachie in Baumform ausgeben

Mit pstree können Sie die aktuelle Prozesshierarchie in Baumform ausgeben lassen. Ohne Angabe von Argumenten zeigt pstree alle Prozesse an, angefangen vom ersten Prozess init (PID = 1). Geben Sie hingegen eine PID oder einen Loginnamen an, so werden nur die Prozesse des Benutzers oder der Prozessnummer hierarchisch angezeigt.

renice – Priorität laufender Prozesse verändern

Mit dem Kommando renice können Sie im Gegensatz zu nice die Priorität von bereits laufenden Prozessen verändern. Ansonsten gilt auch hier alles schon beim Kommando nice Gesagte. Komfortabler können Sie die Priorität laufender Prozesse übrigens mit dem Kommando top verändern. Ein Tastendruck R fragt Sie nach der Prozessnummer und dem nice-Wert des Prozesses, dessen Priorität Sie verändern wollen.

sleep – Prozesse schlafen legen

Mit sleep legen Sie einen Prozess für n Sekunden schlafen. Voreingestellt sind zwar Sekunden, aber über Optionen können Sie hierbei auch Minuten, Stunden oder gar Tage verwenden.

su – Ändern der Benutzerkennung

Dieses Kommando bedeutet SwitchUser. Durch die Angabe ohne Argumente wird hierbei gewöhnlich nach dem Passwort des Superusers gefragt. Unter Ubuntu erfordert das Nutzen des su-Befehls die Einrichtung und Freischaltung des root-Accounts:

user$ sudo passwd 
Password: <Hauptbenutzerpasswort eingeben> 
Enter new UNIX password: <Rootpasswort definieren> 
Retype new UNIX password: <Rootpasswort bestätigen> 
passwd: password updated successfully 
user$ whoami 
hatt 
user$ su 
Password: 
root# whoami 
root 
root# exit 
user$ whoami 
hatt

Wie bereits mehrfach erwähnt, sollte der root-Account nach Möglichkeit deaktiviert bleiben.

Sie können den root-Account nach Freischaltung über

user$ sudo passwd -l root

wieder zurücksetzen.

su startet immer eine neue Shell mit der neuen Benutzer- (UID) und Gruppenkennung (GID). Wie bei einem neuen Login wird nach einem Passwort gefragt. Geben Sie keinen Benutzernamen an, versucht su zu UID 0 zu wechseln, was der Superuser ist. Sofern Sie »Superuser« sind, können Sie auch die Identität eines jeden Benutzers annehmen, ohne ein entsprechendes Passwort zu kennen.

sudo – Programm als anderer Benutzer ausführen

sudo ist ein Kommando, womit ein bestimmter Benutzer ein Kommando ausführen kann, wozu er normalerweise nicht die Rechte hat (bspw. für administrative Aufgaben). Dazu legt root gewöhnlich in der Datei

/etc/sudoers folgenden Eintrag ab:

# Auszug aus /etc/sudoers 
john ALL=/usr/bin/kommando

Jetzt kann der User »john« das Kommando mit folgendem Aufruf starten:

user$ sudo /usr/bin/kommando 
Passwort: *********

Nachdem »john« sein Passwort eingegeben hat, wird das entsprechende Kommando ausgeführt, wozu er normalerweise ohne den Eintrag in

/etc/sudoers nicht im Stande wäre. Der Eintrag wird gewöhnlich mit dem Editor vi über den Aufruf visudo vorgenommen.

Unter Ubuntu wurde der während der Installation angelegte Standardbenutzer automatisch der Gruppe admin zugeordnet, so dass er sämtliche administrativen Aufgaben »aus dem Stand« erledigen kann:

# Auszug aus /etc/sudoers / Ubuntu 
# User privilege specification 
rootALL=(ALL) ALL 
# Members of the admin group may gain root privileges 
\%adminALL=(ALL) ALL

Soll ein weiterer Benutzer auf Ihrem System über root-Rechte und somit die Fähigkeit, via sudo root-Kommandos auszuführen verfügen, so ordnen Sie diesen Benutzer am besten über addgroup der Gruppe admin zu.

time – Zeitmessung für Prozesse

Mit time führen Sie das in der Kommandozeile angegebene Kommando bzw. Skript aus und bekommen die Zeit, die dafür benötigt wurde, zurückgeliefert. Diese Zeit wird dabei aufgeteilt in die tatsächlich benötigte Zeit (real), die Rechenzeit im Usermodus (user) und diejenige im Kernelmodus (sys).

user$ time find . -name *.tex 
… 
real    0m0.657s 
user    0m0.104s 
sys     0m0.127s

top – Prozesse nach CPU-Auslastung anzeigen

Mit top bekommen Sie eine Liste der gerade aktiven Prozesse angezeigt. Die Liste wird nach CPU-Belastung sortiert. Standardmäßig wird top alle fünf Sekunden aktualisiert; beendet wird top mit q. top kann aber noch mehr, als die Auslastung der einzelnen Prozesse anzuzeigen, beispielsweise können Sie mit dem Tastendruck k (kill) einem bestimmten Prozess ein Signal senden oder mit r (renice) die Priorität eines laufenden Prozesses verändern. Ein Blick auf die man-Seite von top bringt außerdem noch einen gewaltigen Überblick zu diesem auf den ersten Blick einfachen Kommando zum Vorschein.


Galileo Computing

24.2.5 Speicherplatzinformationen  downtop

df – Abfrage des Speicherplatzes für

Dateisysteme df zeigt den freien Festplattenplatz für das Dateisystem an, wenn Sie einen Pfad als Verzeichnis angegeben haben. Wird kein Verzeichnis angegeben, dann wird der freie Plattenplatz für alle montierten Dateisysteme angezeigt. Der zusätzliche Parameter h listet den Speicherplatz in menschenlesbarer Form (h=human), sprich in Giga- bzw. Megabyte auf:

user$ df -h 
Dateisystem   Größe Benut  Verf Ben\% Eingehängt auf 
/dev/sda11     20G  4,7G   14G  26\%      / 
… 
/dev/sda3      23G  7,3G   15G  34\%      /daten 
/dev/sdb5      29G   19G  8,4G  70\%      /remaster 
/dev/hdc1      47G  3,2G   44G   7\%      /video 
/dev/hdc3      51G   13G   36G  26\%      /vmware

Die erste Spalte stellt hierbei die Gerätedatei dar, gefolgt von der Größe der Partition (hier in GByte), dann wie viel Speicherplatz benutzt wird und anschließend, wie viel noch verfügbar ist. Die Prozentangabe gibt den prozentualen Wert der Plattennutzung an. Am Ende finden Sie noch den Mountpoint im Dateisystem.

du – Größe eines Verzeichnisbaums ermitteln

du zeigt die Belegung (Anzahl von KByte-Blöcken) durch die Dateien an. In Verzeichnissen wird dabei die Belegung der darin enthaltenen Dateibäume ausgegeben. Um den Wert der Ausgabe zu steuern, können folgende Optionen verwendet werden:


Option Bedeutung
-b Ausgabe in Bytes
-k Ausgabe in Kilobytes
-m Ausgabe in Megabytes
-h (human-readable) vernünftige Ausgabe in Byte, KB, MB oder GB

Häufig will man nicht, dass bei umfangreichen Verzeichnissen jede Datei einzeln ausgegeben wird, sondern nur die Gesamtzahl der Blöcke. Dann verwendet man den Schalter -s (man nutzt diesen praktisch immer).

user$ du -s /home 
582585  /home 
user$ du -sh /home 
569M    /home

Wollen Sie nicht der kompletten Tiefe eines Verzeichnisses folgen, so können Sie sie auch mittels --max-depth=n festlegen:

user$ du --max-depth=1 -m /home 
519      /home/tot 
25       /home/you 
26       /home/john 
569      /home

free – verfügbaren Speicherplatz anzeigen

Den verfügbaren Speicherplatz (RAM und Swapspeicher, also Arbeitsspeicher und Auslagerungsspeicher auf der Festplatte) können Sie sich mit free anzeigen lassen:

user$ free 
     total    used    free  shared buffers cached 
Mem: 1035300  695424  339876   0  57032  381024 
-/+ buffers/cache:  257368     777932 
Swap:      1052216    0    1052216

Galileo Computing

X.2.6 Dateisystem-Kommandos  downtop

Bei den Kommandos zu den Dateisystemen handelt es sich häufig um Kommandos, die zumeist auch nur als root ausführbar sind. Aus Erfahrung weiss ich, dass man schnell gern mit root-Rechten spielt, um mit solchen Kommandos zu experimentieren. Hiervor möchte ich Sie aber warnen, sofern Sie nicht sicher sind, was Sie da tun. Mit zahlreichen dieser Kommandos verlieren Sie häufig nicht nur ein paar Daten, sondern können z.  T. ein ganzes Dateisystem korrumpieren – was sich so weit auswirken kann, dass Ihr Betriebssystem nicht mehr startet.

badblocks – überprüft defekte Sektoren

Mit dem Kommando badblocks testen Sie den physischen Zustand eines Datenträgers. Dabei sucht badblocks auf einer Diskette oder Festplatte nach defekten Blöcken.

user$ sudo badblocks -s -o block.log /dev/fd0 1440

Hier wird z. B. bei einer Diskette (1,44 MByte) nach defekten Blöcken gesucht. Das Fortschreiten der Überprüfung wird durch die Option -s simuliert. Mit -o schreiben Sie das Ergebnis defekter Blöcke in die Datei block.log, die wiederum von anderen Programmen verwendet werden kann, damit diese beschädigten Blöcke nicht mehr genutzt werden. Die Syntax sieht somit wie folgt aus:

user$ badblocks [-optionen] Gerätedatei [startblock]

Die »Gerätedatei« ist der Pfad zum entsprechenden Speichermedium (bspw.

/dev/hda1 = erste Festplatte). Es kann außerdem auch optional der

»startblock« festgelegt werden, von dem aus mit dem Testen begonnen werden soll. Die Ausführung dieses Kommandos bleibt selbstverständlich nur dem Superuser überlassen.

cfdisk – Partitionieren von Festplatten

Mit cfdisk teilen Sie eine formatierte Festplatte in verschiedene Partitionen ein. Natürlich kann man auch eine bestehende Partition löschen oder eine vorhandene verändern (bspw. eine andere Systemkennung vergeben). Man kann mit cfdisk allerdings auch eine »rohe«, ganze Festplatte bearbeiten (nicht nur einzelne Partitionen). Die Gerätedatei ist also

/dev/hda für die erste IDE-Festplatte, /dev/hdb für die zweite Festplatte, /dev/sda für die erste SCSI- bzw. S-ATA-Festplatte, /dev/sdb für die zweite SCSI- bzw. S-ATA- Festplatte usw.

Starten Sie cfdisk, werden alle gefundene Partitionen mitsamt ihren Größe angezeigt. Mit den Pfeiltasten »nach oben« und »nach-unten« können Sie hierbei eine Partition auswählen und mit den Pfeiltasten

»nach-rechts« bzw. »nach-links« ein Kommando. Mit q können Sie cfdisk beenden.

Selbstverständlich ist cfdisk nur als root ausführbar. Sollten Sie solche Rechte haben und ohne Vorwissen mit cfdisk herumspielen, ist Ihnen mindestens ein Datenverlust sicher.

Wenn Sie Ihre Festplatte wirklich

»zerschneiden« wollen, so sollten Sie vor dem Partitionieren die alte Partitionstabelle sichern. Im Fall eines Missgeschicks kann so die alte Partitionstabelle wieder hergestellt werden, wodurch auf die Daten dann noch zugegriffen werden kann.

dd – Datenblöcke zwischen Devices kopieren

Mit dd können Sie eine Datei lesen und den Inhalt in einer bestimmten Blockgröße mit verschiedenen Konvertierungen zwischen verschiedenen Speichermedien (Festplatte, Diskette usw.) übertragen.

Damit lassen sich neben einfachen Dateien auch ganze Festplattenpartitionen kopieren. Ein komplettes Backup kann mit diesem Kommando realisiert werden. Ein Beispiel:

user$ sudo dd if=/dev/hda bs=512 count=1

Damit geben Sie den Bootsektor (nur als root möglich) auf dem Bildschirm aus. Wollen Sie jetzt auch noch ein Backup des Bootsektors auf einer Diskette sichern, dann gehen Sie folgendermaßen vor:

user$ sudo dd if=/dev/hda of=/dev/fd0 bs=512 count=1

Bevor Sie jetzt noch weitere Beispiele zum mächtigen Werkzeug dd sehen werden, müssen Sie sich zunächst mit den Optionen vertraut machen – im Beispiel werden if, of, bs und count verwendet.


Option Bedeutung
if = Datei (input file) Hier gibt man den Namen der Eingabedatei (Quelldatei) an – ohne Angaben wird die Standardeingabe verwendet.
of = Datei (output file) Hier kommt der Name der Ausgabedatei (Zieldatei) hin – ohne Angabe wird hier die Standardausgabe verwendet.
ibs = Schritt (input block size) Hier wird die Blockgröße der Eingabedatei angegeben.
obs = Schritt (output block size) Hier wird die Blockgröße der Ausgabedatei angegeben.
bs = Schritt (block size) Hier legt man die Blockgröße für Ein- und Ausgabedatei fest.
cbs = Schritt (conversion block size) Die Blockgröße für die Konvertierung wird bestimmt.
skip = Blocks Hier können Sie eine Anzahl Blocks angeben, die von der Eingabe zu Beginn ignoriert werden sollen.
seek = Blocks Hier können Sie eine Anzahl Blocks angeben, die von der Ausgabe am Anfang ignoriert werden sollen; unterdrückt am Anfang die Ausgabe der angegebenen Anzahl Blocks.
count = Blocks Hier wird angegeben, wie viele Blöcke kopiert werden sollen.

Eine spezielle Option steht Ihnen mit conv-Konvertierung zur Verfügung. Folgende Konvertierungen sind dabei möglich:


Option Konvertierung
conv=ascii EBCDIC nach ASCII
conv=ebcdic ASCII nach EBCDIC
conv=ibm ASCII nach big blue special EBCDIC
conv=block Es werden Zeilen in Felder mit der Größe cbs geschrieben und das Zeilenende wird durch Leerzeichen ersetzt. Der Rest des Feldes wird mit Leerzeichen aufgefüllt.
conv=unblock Abschließende Leerzeichen eines Blocks der Größe cbs werden durch ein Zeilenende ersetzt.
conv=lcase Großbuchstaben in Kleinbuchstaben
conv=ucase Kleinbuchstaben in Großbuchstaben
conv=swab Vertauscht je zwei Bytes der Eingabe. Ist die Anzahl der gelesenen Bytes ungerade, wird das letzte Byte einfach kopiert.
conv=noerror Lesefehler werden ignoriert.
conv=sync Füllt Eingabeblöcke bis zur Größe von ibs mit Nullen

Jetzt noch einige interessante Beispiel zu dd:

user$ sudo dd if=/vmlinuz of=/dev/fd0

Damit kopieren Sie den Kernel (hier in »vmlinuz« – bitte anpassen) in den ersten Sektor der Diskette, die als Bootdiskette verwendet werden kann.

user$ sudo dd if=/dev/hda of=/dev/hdc

Mächtig, hiermit klonen Sie praktisch in einem Schritt die erste Festplatte am Master IDE-Kontroller auf die Festplatte am zweiten Master-Anschluss. Somit haben Sie auf /dev/hdc denselben Inhalt wie auf

/dev/hda. Natürlich kann die Ausgabedatei auch ganz woanders hingeschrieben werden, z. B. auf einen DVD-Brenner, eine Festplatte am USB-Anschluss oder in eine Datei.

Zwar ist dd ein mächtigeres Werkzeug, als es hier vielleicht den Anschein hat, doch trotzdem sollten Sie gewarnt sein vor wirren dd-Aufrufen. Der Datensalat ist auch hier schneller entstanden als sonstwo. Daher benötigt man wieder die allmächtigen root-Rechte. Falls Sie größere Datenmengen mit dd kopieren, können Sie dem Programm von einer anderen Konsole aus mittels kill das Signal SIGUSR1 senden, um dd zu veranlassen, den aktuellen Fortschritt auszugeben.

dd_rescue – fehlertolerantes Kopieren

Falls Sie z. B. eine defekte Festplatte – oder eine Partition auf derselben

– kopieren wollen, stößt dd schnell an seine Grenzen. Zudem ist beim Retten von Daten eines defekten Speichermediums die Geschwindigkeit wichtig, da das Medium weitere Fehler verursachen kann und somit weitere Dateien korrumpiert werden können. Ein Fehlversuch mit dd kann hier also fatale Folgen haben.

An dieser Stelle bietet sich das Werkzeug dd_rescue an, das bei Ubuntu mit Hilfe des gleichnamigen Pakets nachinstalliert wird. Sie können damit – ähnlich wie mit dd – Dateiblöcke auf Low-Level-Basis auf ein anderes Medium kopieren. Als Zielort ist eine Datei auf einem anderen Speichermedium sinnvoll. Von diesem Abbild der defekten Festplatte können Sie eine Kopie erstellen, um das ursprüngliche Abbild nicht zu verändern, und in einem der Abbilder versuchen, das Dateisystem mittels fsck wieder zu reparieren. Ist dies gelungen, können Sie das Abbild wieder mit dd_rescue auf eine neue Festplatte kopieren. Ein Beispiel:

user$ sudo dd_rescue -v /dev/hda1 \ 
/mnt/rescue/hda1.img

In dem Beispiel wird die Partition /dev/hda1 in die Abbilddatei

/mnt/ rescue/hda1.img kopiert.

dumpe2fs – Analyse von ext2/ext3-Systemen

dumpe2fs gibt eine Menge interne Informationen zum Superblock und anderen Blockgruppen zu einem ext2/ext3-Dateisystem aus (vorausgesetzt, dieses Dateisystem wird auch verwendet), zum Beispiel:

user$ sudo dumpe2fs -b /dev/hda6

Mit der Option -b werden alle Blöcke von /dev/hda6 auf die Konsole ausgegeben, die als »schlecht« markiert wurden.

e2fsck – repariert ein ext2/ext3-Dateisystem

e2fsck überprüft ein ext2/ext3-Dateisystem und repariert den Fehler. Damit e2fsck verwendet werden kann, muss fsck.ext2 installiert sein, welches das eigentliche Programm ist. e2fsck ist nur ein »Frontend« dafür. Die Befehlssyntax lautet:

user$ sudo e2fsck Gerätedatei

Mit der »Gerätedatei« geben Sie die Partition an, auf der das Dateisystem überprüft werden soll (das selbstverständlich wieder ein ext2/ext3Dateisystem sein muss). Bei den Dateien, bei denen die Inodes in keinem Verzeichnis notiert sind, werden sie von e2fsck im Verzeichnis lost+found eingetragen und können so repariert werden. e2fsck gibt beim Überprüfen einen Exit-Code zurück, den Sie mit echo $? abfragen können. Folgende wichtigen Exit-Codes und deren Bedeutung können dabei zurückgegeben werden:


Exit-Code Bedeutung
0 Kein Fehler im Dateisystem
1 Einen Fehler im Dateisystem gefunden und repariert
2 Schweren Fehler im Dateisystem gefunden und korrigiert. Allerdings sollte das System neu gestartet werden.
4 Fehler im Dateisystem gefunden, aber nicht korrigiert
8 Fehler bei der Kommandoausführung von e2fsck
16 Falsche Verwendung von e2fsck
128 Fehler in den Shared-Libraries

Wichtige Optionen, die Sie mit e2fsck angeben können, sind:


Option Bedeutung
-p Alle Fehler automatisch reparieren ohne Rückfragen
-c Durchsucht das Dateisystem nach schlechten Blöcken
-f Erzwingt eine Überprüfung des Dateisystems, auch wenn der Kernel das System für OK befunden hat (valid-Flag gesetzt)

fsck fragt meist nach, ob das Kommando wirklich ausgeführt werden soll. Bei der Antwort genügt der Anfangsbuchstabe »j« oder »y« als Antwort nicht, sondern es muss »yes« oder »ja« (je nach Fragestellung) eingegeben werden. Anderenfalls bricht fsck an dieser Stelle kommentarlos ab.

fdformat – formatiert eine Diskette

Auch wenn viele Rechner mittlerweile ohne Diskettenlaufwerk ausgeliefert werden, wird das Diskettenlaufwerk immer wieder einmal benötigt (z. B. für eine Rettungsdiskette mit einem Mini-Linux). Mit dem Kommando fdformat formatieren Sie eine Diskette. Das Format wird dabei anhand von im Kernel gespeicherten Parametern erzeugt. Beachten Sie allerdings, dass die Diskette nur mit leeren Blöcken beschrieben wird und nicht mit einem Dateisystem. Zum Erstellen von Dateisystemen stehen Ihnen die Kommandos mkfs, mk2fs oder mkreiserfs zur Verfügung. Die Syntax des Befehls lautet:

fdformat Gerätedatei

fdisk – Partitionieren von Speichermedien

fdisk ist die etwas unkomfortablere Alternative gegenüber cfdisk, eine Festplatte in verschiedene Partitionen aufzuteilen, zu löschen oder gegebenenfalls zu ändern. Im Gegensatz zu cfdisk können Sie hier nicht mit den Pfeiltasten navigieren und müssen einzelne Tastenkürzel verwenden. Allerdings hat fdisk den Vorteil, fast überall und immer präsent zu sein. Die wichtigsten Tastenkürzel zur Partitionierung selbst sind:


Taste Bedeutung
b »bsd disklabel« bearbeiten
d Eine Partition löschen
l Die bekannten Dateisystemtypen anzeigen (Sie benötigen die Nummer)
m Ein Menü mit allen Befehlen anzeigen
n Eine neue Partition anlegen
p Die Partitionstabelle anzeigen
q Ende ohne Speichern der Änderungen
s Einen neuen leeren »Sun disklabel« anlegen
t Den Dateisystemtyp einer Partition ändern
u Die Einheit für die Anzeige/Eingabe ändern
v Die Partitionstabelle überprüfen
w Die Tabelle auf die Festplatte schreiben und das Programm beenden
w Zusätzliche Funktionen (nur für Experten)

Noch ein Vorzug ist, dass fdisk nicht interaktiv läuft. Man kann es z. B. benutzen, um einen ganzen Schlag Festplatten automatisch zu formatieren. Das ist ganz praktisch, wenn man ein System identisch auf einer ganzen Anzahl Rechner installieren muss. Man installiert nur auf einem, erzeugt mit dd ein Image, erstellt ein kleines Skript, bootet die anderen Rechner z. B. von »damnsmall-Linux« (einer speziellen Mini-Distribution z. B. für den USB-Stick) und führt das Skript aus, das dann per fdisk formatiert und per dd das Image des Prototypen installiert. Danach muss man nur noch die IP-Adresse und den Hostname anpassen, was Sie auch skriptgesteuert vornehmen können. Einen komfortablen Überblick zu allen Partitionen auf allen Festplatten können Sie sich mit der Option -l anzeigen lassen:

user$ sudo fdisk -l 
Platte /dev/hdc: 120.0 GByte, 120034123776 Byte 
255 Köpfe, 63 Sektoren/Spuren, 14593 Zylinder 
Einheiten = Zylinder von 16065 × 512 = 8225280 Bytes 
Gerät      Anfang     Ende     Blöcke   Id  System 
/dev/hdc1    1        6079    48829536   83  Linux 
/dev/hdc2 6080        7903    14651280   83  Linux 
/dev/hdc3 7904       14593    53737425   83  Linux

Zum Partitionieren müssen Sie fdisk mit der Angabe der Gerätedatei starten:

user$ sudo fdisk /dev/hda

fsck – Reparieren und Überprüfen

fsck ist ein unabhängiges Frontend zum Prüfen und Reparieren der Dateisystem-Struktur. fsck ruft gewöhnlich je nach Dateisystem das entsprechende Programm auf. Bei ext2/ext3 ist dies bspw. fsck.ext2, bei einem Minix-System fsck.minix, bei ReiserFS reiserfsck usw. Die Zuordnung des entsprechenden Dateisystems nimmt fsck anhand der Partitionstabelle oder durch eine Kommandozeilenoption vor. Die meisten dieser Programme unterstützen die Optionen -a, -A, -l, -r, -s und -v. Meistens wird hierbei die Option -a -A verwendet. Mit -a veranlassen Sie eine automatische Reparatur, sofern dies möglich ist, und mit -A geben Sie an, dass alle Dateisysteme getestet werden sollen, die in /etc/fstab eingetragen sind. fsck gibt beim Überprüfen einen Exit-Code zurück, den Sie mit echo $? abfragen können. Folgende wichtige Exit-Codes und deren Bedeutung können dabei zurückgegeben werden:


Exit-Code Bedeutung
0 Kein Fehler im Dateisystem
1 Einen Fehler im Dateisystem gefunden und repariert
2 Schweren Fehler im Dateisystem gefunden und korrigiert. Allerdings sollte das System neu gestartet werden.
4 Fehler im Dateisystem gefunden, aber nicht korrigiert
8 Fehler bei der Kommandoausführung von fsck
16 Falsche Verwendung von fsck
128 Fehler in den Shared-Libraries

Ganz wichtig ist es auch, fsck immer auf nicht eingebundene bzw. nur im readonly-Modus eingebundene Dateisysteme anzuwenden. Denn fsck kann sonst eventuell ein Dateisystem verändern (reparieren), ohne dass das System dies zu realisieren vermag. Ein Systemabsturz ist dann vorprogrammiert. Gewöhnlich wird fsck bzw. fsck.ext3 beim Systemstart automatisch ausgeführt, wenn eine Partition nicht sauber ausgebunden wurde oder nach jedem 30sten Booten bei Ubuntu in der Standardeinstellung.

mkfs – Dateisystem einrichten

Mit mkfs können Sie auf einer zuvor formatierten Festplatte bzw. Diskette ein Dateisystem anlegen. Wie schon fsck ist mkfs ein unabhängiges Frontend, das die Erzeugung des Dateisystems nicht selbst übernimmt, sondern auch hier das spezifische Programm zur Erzeugung des entsprechenden Dateisystems verwendet. Auch hierbei richtet sich mkfs wieder nach den Dateisystemen, die in der Partitionstabelle aufgelistet sind, oder gegebenenfalls nach der Kommandozeilenoption. Abhängig vom Dateisystemtyp ruft mkfs dann das Kommando mkfs.minix (für Minix), mk2fs (für ext2/ext3), mkreiserfs (für ReiserFS) usw. auf. Die Syntax lautet:

user$ mkfs [option] Gerätedatei [blöcke]

Für die »Gerätedatei« müssen Sie den entsprechenden Pfad angeben (z. B. /dev/hda1). Es kann außerdem auch die Anzahl von Blöcken angegeben werden, die das Dateisystem belegen soll. Auch mkfs gibt einen Exit-Code über den Verlauf der Kommandoausführung zurück, den Sie mit echo $? auswerten können.


Exit-Code Bedeutung
0 Alles erfolgreich durchgeführt
8 Fehler bei der Programmausführung
16 Ein Fehler in der Kommandozeile

Mit der Option -t können Sie den Dateisystemtyp des zu erzeugenden Dateisystems festlegen. Ohne

-t würde hier versucht, das Dateisystem anhand der Partitionstabelle zu bestimmen. Sie erzeugen z. B. mit

user$ sudo mkfs -f xfs /dev/hda7

auf der Partition /dev/hda7 ein Dateisystem xfs (alternativ zu ext2).

mkswap – eine Swappartition einrichten

Mit mkswap legen Sie eine Swappartition an. Diese können Sie z. B. dazu verwenden, schlafende Prozesse, die auf das Ende von anderen Prozessen warten, in die Swappartition der Festplatte auszulagern. So halten Sie Platz im Arbeitsspeicher für andere laufende Prozesse frei. Sofern Sie nicht schon bei der Installation von Ubuntu die (gewöhnlich) vorgeschlagene Swapppartition eingerichtet haben, können Sie dies nachträglich mit dem Kommando mkswap vornehmen. Zum Aktivieren einer Swappartition müssen Sie das Kommando swapon aufrufen. Ist Ihr Arbeitsspeicher ausgelastet, können Sie auch kurzfristig solch einen Swapspeicher einrichten.

Ein Beispiel:

user$ sudo dd bs=1024 if=/dev/zero \ 
of=/tmp/myswap count=4096 
4096+0 Datensätze ein 
4096+0 Datensätze aus 
user$ sudo mkswap -c /tmp/myswap 4096 
Swapbereich Version 1 wird angelegt, 
Größe 4190 KBytes 
user$ sudo sync 
user$ sudo swapon /tmp/myswap

Zuerst legen Sie mit dd einen leere Swapdatei mit 4 Megabytes Größe mit Null-Bytes an. Anschließend verwenden Sie diesen Bereich als Swapdatei. Nach einem Aufruf von sync müssen Sie nur noch den Swapspeicher aktivieren. Wie dieser Swapbereich allerdings verwendet wird, haben Sie nicht in der Hand, dies wird vom Kernel mit dem »Paging« gesteuert.

Eine Datei, die als Swapbereich eingebunden wird, sollte nur genutzt werden, wenn keine Partition dafür zur Verfügung steht, da die Methode erheblich langsamer ist als eine Swap-Partition.

mount, umount – Dateisysteme an- bzw. abhängen

mount hängt einzelne Dateisysteme mit den verschiedensten Medien (Festplatte, CD-ROM, Diskette, ...) an einen einzigen Dateisystembaum an. Die einzelnen Partitionen werden dabei als Gerätedateien im Ordner /dev angezeigt. Rufen Sie mount ohne irgendwelche Argumente auf, werden alle »gemounteten« Dateisysteme aus /etc/mtab aufgelistet. Auch hier bleibt es wieder root überlassen, ob ein Benutzer ein bestimmtes Dateisystem einbinden kann oder nicht. Hierzu muss nur ein entsprechender Eintrag in /etc/fstab vorgenommen werden. In der folgenden Tabelle finden Sie einige Beispiele, wie verschiedene Dateisysteme eingehängt werden können:


Verwendung Bedeutung
mount /dev/fd0 Hängt das Diskettenlaufwerk ein
mount /dev/hda9 /home/you Hier wird das Dateisystem /dev/hda9 an das Verzeichnis /home/you gemountet.
mount goliath:/progs \ /home/progs Mountet ein Dateisystem per NFS von einem Rechner namens »goliath« und hängt diesen an das lokale Verzeichnis /home/progs

Wollen Sie ein Dateisystem wieder aushängen, egal ob jetzt lokale oder entfernte Partitionen, dann nehmen Sie dies mit umount vor:

user$ umount /dev/fd0

Hier wird das Diskettenlaufwerk aus dem Dateisystem ausgehängt. Wenn ein Eintrag für ein Dateisystem in der /etc/fstab besteht, reicht es aus, mount mit dem Device oder dem Mountpoint als Argument aufzurufen:

»mount /dev/fd0«.

parted – Partitionen anlegen etc.

Mit parted können Sie nicht nur – wie mit fdisk bzw. cfdisk – Partitionen anlegen oder löschen, sondern auch vergrößern, verkleinern, kopieren und verschieben. parted wird gern verwendet, wenn man Platz auf der Festplatte schaffen will für ein neues Betriebssystem oder alle Daten einer Festplatte auf eine neue kopieren will. Mehr hierzu entnehmen Sie der Manual-Seite von parted.

swapon, swapoff – Swapspeicher (de)aktivieren

Wenn Sie auf dem System eine Swap-Partition eingerichtet haben (siehe mkswap), existiert diese zwar, muss aber noch mit dem Kommando swapon aktiviert werden. Den so aktivierten Bereich können Sie jederzeit mit swapoff wieder aus dem laufenden System deaktivieren.

sync – gepufferte Schreiboperationen ausführen

Normalerweise verwendet Linux einen Puffer (Cache) im Arbeitsspeicher, worin sich ganze Datenblöcke eines Massenspeichers befinden. So werden Daten häufig temporär erst im Arbeitsspeicher verwaltet, da sich ein dauernd schreibender Prozess äußerst negativ auf die Performance des Systems auswirken würde. Stellen Sie sich das einmal bei 100 Prozessen vor!

Gewöhnlich übernimmt ein Daemon die Arbeit und entscheidet, wann die veränderten Datenblöcke auf die Festplatte geschrieben werden.

Mit dem Kommando sync können Sie nun veranlassen, dass veränderte Daten sofort auf die Festplatte (oder auch jeden anderen Massenspeicher) geschrieben werden. Dies kann häufig der letzte Rettungsanker sein, wenn das System sich nicht mehr richtig beenden lässt. Können Sie hierbei noch schnell ein sync ausführen, werden alle Daten zuvor nochmals gesichert und der Datenverlust kann eventuell ganz verhindert werden.


Galileo Computing

24.2.7 Archivierung und Backup  downtop

bzip2/bunzip2 – (De-)Komprimieren von Dateien

bzip2 ist dem Kommando gzip nicht unähnlich, nur dass bzip2 einen besseren Komprimierungsgrad als gzip erreicht. bzip arbeitet mit dem Burrows-Wheeler-Block-Sorting-Algorithmus, der den Text zwar nicht komprimiert, aber leichter komprimierbar macht, sowie mit der Huffman-Kodierung. Allerdings ist die Kompression mit bzip2 erheblich besser, aber dafür auch erheblich langsamer. Alle Dateien, die mit bzip2 komprimiert werden, bekommen automatisch die Dateiendung ».bz2«. TAR-Dateien, die mit bzip2 komprimiert werden, erhalten üblicherweise die Endung ».tbz«. Die »2« bei bzip2 bzw. bunzip2 kam dadurch, dass der Vorgänger bzip hieß, der allerdings aus patentrechtlichen Gründen nicht mehr weiterentwickelt wurde. Komprimieren können Sie Dateien mit bzip2 folgendermaßen:

user$ bzip2 file.txt

Entpacken können Sie die komprimierte Datei wieder mit der Option

-d und bzip2 oder mit bunzip2.

user$ bzip2 -d file.txt.bz2

oder

user$ bunzip2 file.txt.bz2

Sie können gern bzip2 mit der Option -d bevorzugen, weil bunzip2 nichts anderes ist als ein Link auf bzip2, wobei allerdings automatisch die Option -d verwendet wird. Interessant ist in diesem Zusammenhang auch das Kommando bzcat, womit Sie bzip2-komprimierte Dateien lesen können, ohne diese vorher zu dekomprimieren.

user$ bzcat file.txt.bz2 
…

cpio, afio – Dateien archivieren

cpio (copy in and out) eignet sich hervorragend, um ganze Verzeichnisbäume zu archivieren. Etwas ungewöhnlich auf den ersten Blick ist, dass cpio die zu archivierenden Dateien nicht von der Kommandozeile, sondern von der Standardeingabe liest. Häufig wird daher cpio in Verbindung mit den Kommandos ls oder find und einer Pipe verwendet. Damit ist es möglich, ein spezielles Archiv zu erzeugen, das den Eigentümer, die Zugriffsrechte, die Erzeugungszeit, die Dateigröße usw. berücksichtigt. Gewöhnlich wird cpio auf drei verschiedenen Arten aufgerufen.

copy out

Diese Art wird mit der Option -o bzw. ---create verwendet. So werden die Pfadnamen der zu kopierenden Dateien von der Standardeingabe eingelesen und auf die Standardausgabe kopiert. Es können z. B. der Eigentümer, die Zugriffsrechte, die Dateigröße, ausgegeben werden. Gewöhnlich verwendet man copy out mit einer Pipe und einer Umlenkung:

user$ cd meinbuch 
user$ ls 
Kap001.txt  Kap002.txt 
… 
user$ ls *.txt | cpio -o > meinbuch.cpio 
1243 blocks

Hier wurden z. B. alle Textdateien im Verzeichnis meinbuch zu einem cpio-Archiv (meinbuch.cpio) gepackt. Allerdings konnten hier nur bestimmte Dateien erfasst werden. Wollen Sie ganze Verzeichnisbäume archivieren, dann verwenden Sie das Kommando find:

user$ find $HOME/meinbuch -print | cpio -o > \ 
meinbuch.cpio

Natürlich können Sie hierbei mit find-üblichen Anweisungen nur bestimmte Dateien archivieren. Ebenso lassen sich Dateien auch auf ein anderes Laufwerk archivieren:

user$ ls -a | cpio -o > /dev/fd0

Hier wurden beispielsweise alle Dateien des aktuellen Verzeichnisses auf die Diskette kopiert. Dabei können Sie genauso gut einen Streamer, eine andere Festplatte oder gar einen anderen Rechner verwenden.

copy in

Wollen Sie das mit cpio -o erzeugte Archiv wieder entpacken bzw. zurückspielen, so wird cpio mit dem Schalter -i bzw. ---extract verwendet. Damit liest cpio die archivierten Dateien von der Standardeingabe ein. Es ist sogar möglich, hierbei reguläre Ausdrücke zu verwenden. Mit folgender Befehlsausführung entpacken Sie das Archiv wieder:

user$ cpio -i < meinbuch.cpio

Um nur bestimmte Dateien zu entpacken, nutzen Sie folgenden Befehl:

user$ cpio -i "*.txt" < meinbuch.cpio

Hier entpacken Sie nur Textdateien mit der Endung ».txt«.

Natürlich funktioniert das Ganze auch mit den verschiedensten Speichermedien:

user$ cpio -i "*.txt" < /dev/fd0

Hier werden alle Textdateien von einer Diskette entpackt. Allerdings werden die Dateien immer ins aktuelle Arbeitsverzeichnis zurückgespielt, so dass Sie den Zielort schon zuvor angeben müssen, zum Beispiel:

user$ cd $HOME/meinbuch/testdir ; \ 
> cpio -i < /archive/meinbuch.cpio

Hier wechseln Sie zunächst in ein entsprechendes Verzeichnis, in dem Sie anschließend das Archiv entpacken wollen. Wollen Sie außerdem erst wissen, was Sie entpacken, also was für Dateien sich in einem cpio-Archiv befinden, dürfen Sie cpio nur mit der Option -t verwenden:

user$ cpio -t < meinbuch.cpio 
…

copy pass

Mit copy pass werden die Dateien von der Standardeingabe gelesen und in ein entsprechendes Verzeichnis kopiert, ohne dass ein Archiv erzeugt wird. Hierzu wird die Option -p eingesetzt. Voraussetzung ist natürlich, dass ein entsprechendes Verzeichnis existiert. Wenn nicht, können Sie zusätzlich die Option -d verwenden, womit dann ein solches Verzeichnis erzeugt wird.

user$ ls *.txt | cpio -pd /archive/testdir2

Hiermit werden aus dem aktuellen Verzeichnis alle Textdateien in das Verzeichnis testdir2 kopiert. Der Aufruf entspricht:

user$ cp *.txt /archive/testdir2

Einen ganzen Verzeichnisbaum des aktuellen Arbeitsverzeichnisses könnten Sie somit mit folgendem Aufruf kopieren:

user$ find . -print | cpio -pd /archiv/testdir3

afio

afio bietet im Gegensatz zu cpio die Möglichkeit, die einzelnen Dateien zu komprimieren. Somit stellt afio eine interessante tar-Alternative dar (für alle, die tar mit seinen typischen Optionsparametern nicht mögen). afio komprimiert die einzelnen Dateien noch, bevor sie in ein Archiv zusammengefasst werden. Unter Ubuntu muss afio allerdings zunächst mit dem gleichnamigen Paket nachinstalliert werden. Ein einfaches Beispiel zur Anwendung von afio:

user$ ls *.txt | afio -o -Z meinbuch.afio

Sie komprimieren zunächst alle Textdateien im aktuellen Verzeichnis und fassen dies dann in das Archiv meinbuch.afio zusammen. Die Platzeinsparung im Vergleich zu cpio ist beachtlich:

user$ ls -l Shellbook* 
-rw-------  1 tot users 209920 meinbuch.afio 
-rw-------  1 tot users 640512 meinbuch.cpio

Entpacken können Sie das Archiv wieder wie bei cpio mit dem Schalter -i:

user$ afio -i -Z Shellbook.afio

ccrypt – Dateien verschlüsseln

Mit dem Kommando ccrypt wird ein zu ver-/entschlüsselnder Text von der Standardeingabe gelesen, um diesen wieder ver-/entschlüsselt auf die Standardausgabe auszugeben. ccrypt wird unter Ubuntu mit Hilfe des gleichnamigen Pakets installiert. Ein Anwendungsbeispiel:

user$ ccrypt file.txt 
Enter encryption key: 
Enter encryption key: (repeat)

Wie oben zu sehen, ist die Eingabe eines Schlüssels erforderlich, der zusätzlich zu bestätigen ist. Es wird eine Binärdatei file.txt.cpt erzeugt. Diese lässt sich mit der Option -d dechiffrieren:

user$ ccrypt -d file.txt.cpt 
Enter encryption key:

Beachten Sie bitte die Gesetzeslage zur Verschlüsselung in Ihrem Heimatland. Kryptographie ist inzwischen in einigen Ländern verboten. So darf man in Frankreich zum Beispiel kein PGP einsetzen.

gzip/gunzip – (De-)Komprimieren von Dateien

gzip komprimiert Dateien und fügt am Ende des Dateinamens die Endung

».gz« an. Die Originaldatei wird hierbei durch die komprimierte Datei ersetzt. gzip basiert auf dem deflate-Algorithmus, der eine Kombination aus LZ77 und Huffman-Kodierung ist. Der Zeitstempel einer Datei und auch die Zugriffsrechte bleiben beim Komprimieren und auch beim Entpacken mit gunzip erhalten.

Sofern Sie Softwareentwickler in bspw. C sind und Datenkompression verwenden wollen, sollten Sie sich die Bibliothek zlib ansehen. Diese Bibliothek unterstützt das gzip-Dateiformat.

Sie komprimieren eine oder mehrere Datei(en) ganz einfach mit:

user$ gzip file1.txt

Und Dekomprimieren geht entweder mit gzip und der Option

-d:

user$ gzip -d file1.txt.gz

oder mit gunzip:

user$ gunzip file1.txt.gz

Wobei gunzip hier kein symbolischer Link ist, sondern ein echtes Kommando. gunzip kann neben gzip-Dateien auch Dateien dekomprimieren, die mit zip, compress oder pack komprimiert wurden.

Wollen Sie, dass beim (De-)Komprimieren nicht die Originaldatei berührt wird, so müssen Sie die Option -c verwenden:

user$ gzip -c file1.txt > file1.txt.gz

Dies können Sie ebenso mit gunzip anwenden:

user$ gunzip -c file1.txt.gz > file1_neu.txt

Damit lassen Sie die gzip-komprimierte Datei file1.txt.gz unberührt und erzeugen eine neue dekomprimierte Datei file1_neu.txt. Selbiges können Sie auch mit zcat erledigen:

user$ zcat file1.txt.gz > file1_neu.txt

mt – Streamer steuern

Mit mt können Magnetbänder vor- oder zurückgespult, positioniert und gelöscht werden. mt wird häufig in Shell-Skripten in Verbindung mit tar, cpio oder afio verwendet, weil jedes der Kommandos zwar auf Magnetbänder schreiben, aber diese nicht steuern kann. So wird mt wie folgt in der Praxis verwendet:

mt -f Tape Befehl [Nummer]

Mit »Tape« geben Sie den Pfad zu Ihrem Bandlaufwerk an und mit »Nummer«, wie oft »Befehl« ausgeführt werden soll.

In der folgenden Tabelle finden Sie hierzu die gängigsten Befehle, die dabei eingesetzt werden:


Befehl Bedeutung
eom Band bis zum Ende der letzten Datei spulen. Ab hier kann mit tar, cpio und afio ein Backup aufgespielt werden.
fsf Anzahl Das Band um »Anzahl« Archive (Dateiendemarken) vorspulen. Nicht gleichzusetzen mit der letzten Datei (eom).
nbsf Anzahl Das Band um »Anzahl« Archive (Dateiendemarken) zurückspulen
rewind Das Band an den Anfang zurückspulen
status Statusinformationen vom Magnetlaufwerk ermitteln und ausgeben (bspw. ist ein Band eingelegt oder nicht)
erase Das Band löschen und initialisieren
retension Das Band einmal ans Ende spulen und wieder zum Anfang zurück, um es neu zu »spannen«
offline Band zum Anfang zurückspulen und auswerfen

tar – Dateien und Verzeichnisse archivieren

tar (tape archiver) wurde ursprünglich zur Verwaltung von Bandarchiven verwendet. Mittlerweile wird tar aber auch auf Disketten oder für normale Dateien oder Verzeichnisse angewendet. Das Kommando wird zur Erstellung von Sicherungen bzw. Archiven sowie zu ihrem Zurückladen genutzt. Die Syntax lautet:

tar Funktion [Optionen] [Datei(en)]

Mit »Funktion« geben Sie an, wie die Erstellung bzw. das Zurückladen von Archiven erfolgen soll. Mit »Datei(en)« bestimmen Sie, welche Dateien oder Dateibäume herausgeschrieben oder wieder eingelesen werden sollen. Gibt man hierbei ein Verzeichnis an, so wird der gesamte darin enthaltene Dateibaum verwendet. Gewöhnlich werden Archive mittels tar nicht komprimiert, aber auch hier kann man mit tar die Ein- und Ausgabe durch einen Kompressor leiten. Neuere Versionen unterstützen sowohl compress als auch gzip und bzip2, das inzwischen einen recht hohen Stellenwert hat. Das gilt auch nicht nur für GNU-tar.

tar (besonders GNU-tar) ist gewaltig, was die Anzahl von Funktionen und Optionen betrifft. Da tar eigentlich zu einem sehr beliebten Archivierungswerkzeug gehört, sollen hierbei auch mehrere Optionen und Funktionen erwähnt werden. In der nachfolgenden Tabelle sind die Optionen, mit denen Sie die Funktion von tar festlegen, aufgelistet (es darf bei den 1-Zeichen-Funktionen auch das führende -weggelassen werden).


Option Bedeutung
-A Hängt ein komplettes Archiv an ein zweites vorhandenes Archiv an (oder fügt es auf dem Band hinten an)
-c Erzeugt ein neues Archiv
-d Vergleicht die im Archiv abgelegten Dateien mit den angegebenen Dateien
---delete Datei(en) Löscht die angegebenen »Datei(en)« aus dem Archiv (nicht für Magnetbänder)
-r Erwähnte Dateien werden ans Ende von einem bereits existierenden Archiv angehängt (nicht für Magnetbänder)
-t Zeigt den Inhalt eines Archivs an
-u Benannte Dateien werden nur dann ins Archiv aufgenommen, wenn diese neuer als die bereits archivierten Versionen oder noch überhaupt nicht im Archiv vorhanden sind (nicht für Magnetbänder).
-x Bestimmte Dateien sollen aus einem Archiv gelesen werden; werden keine Dateien erwähnt, werden alle Dateien aus dem Archiv extrahiert.

Darüber hinaus gibt es noch einige Zusatzoptionen. Die gängigsten sind:


Option Bedeutung
-f Datei Benutzt »Datei« oder das damit verbundenen Gerät als Archiv; die Datei darf auch Teil von einem anderen Rechner sein.
-l Geht beim Archivieren nicht über die Dateisystemgrenze hinaus
-v tar gibt gewöhnlich keine speziellen Meldungen aus; mit dieser Option wird jede Aktion von tar gemeldet.
-w Schaltet tar in einen interaktiven Modus, wo zu jeder Aktion eine Bestätigung erfolgen muss
-y Komprimiert oder dekomprimiert die Dateien bei einer tar-Operation mit bzip2
-z Komprimiert oder dekomprimiert die Dateien bei einer tar-Operation mit gzip bzw. gunzip
-Z Komprimiert oder dekomprimiert die Dateien bei einer tar-Operation mit compress bzw. uncompress

Neben diesen zusätzlichen Optionen bietet tar noch mehr an. Weitere Informationen entnehmen Sie der man-Seite zu tar. Allerdings dürften Sie mit den genannten Optionen recht weit kommen. Am häufigsten wird tar wohl in folgender Grundform verwendet:

user$ tar cf Archiv_Name Verzeichnis

Damit wird aus dem Verzeichniszweig Verzeichnis ein Archiv mit dem Namen Archiv_Name erstellt.

In der Praxis sieht dies folgendermaßen aus:

user$ tar cf home_jan06 $HOME

Aus dem kompletten Heimverzeichnis des Benutzers wird das Archiv home_jan06 erstellt. Damit Sie beim Zurückspielen der Daten flexibler sind, sollten Sie einen relativen Verzeichnispfad angeben:

cd Verzeichnis ; tar cf Archiv_Name .

Im Beispiel:

user$ cd ; tar cf home_jan06 .

Hierfür steht Ihnen für das relative Verzeichnis auch die Option –C Verzeichnis zur Verfügung:

tar cf Archiv_Name -C Verzeichnis .

Wollen Sie die Dateien und Verzeichnisse des Archivs wiederherstellen, lautet der gängige Befehl hierzu wie folgt:

tar xf Archiv_Name

Um auf unser Beispiel zurückzukommen:

user$ tar xf home_jan06

Wollen Sie einzelne Dateien aus einem Archiv wiederherstellen, so ist dies auch kein allzu großer Aufwand:

user$ tar xf home_jan06 datei1 datei2 …

Beachten Sie allerdings, wie Sie die Datei ins Archiv gesichert haben (relativer oder absoluter Pfad). Wollen Sie bspw. die Datei meinbuch.cpio mit dem relativen Pfad wiederherstellen, so können Sie dies wie folgt tun:

user$ tar xf meinbuch_jan06 ./meinbuch.cpio

Ein häufiger Fehler, wenn etwas mit tar nicht klappt, ist eine falsche Pfadangabe. Man sollte daher immer überlegen, wo liegt das Archiv, wo soll rückgesichert werden und wie wurden die Dateien ins Archiv aufgenommen (absoluter oder relativer Pfad).

Wollen Sie außerdem mitverfolgen, was beim Erstellen oder Auspacken eines Archivs alles passiert, sollten Sie die Option v verwenden. Hierbei können Sie außerdem gleich erkennen, ob Sie die Dateien mit dem absoluten oder relativen Pfad gesichert haben.

# neues Archiv erzeugen, mit Ausgabe aller Aktionen 
tar cvf Archiv_Name Verzeichnis 
 
# Archiv zurückspielen, mit Ausgabe aller Aktionen 
tar xvf Archiv_Name

Den Inhalt eines Archivs können Sie mit der Option t ansehen:

tar tf Archiv_Name

In unserem Beispiel:

user$ tar tf home_jan06 
./ 
./Ubuntubuch 
./Ubuntubuch/kapitel_1.tex 
…

Hier wurde also der relative Pfadname verwendet. Wollen Sie ein ganzes Verzeichnis auf Diskette sichern, erledigen Sie dies folgendermaßen:

user$ tar cf /dev/fd0 Ubuntubuch

Hier kopieren Sie das ganze Verzeichnis auf eine Diskette. Zurückspielen können Sie das Ganze wieder wie folgt:

user$ tar xvf /dev/fd0 Ubuntubuch

Wollen Sie einen kompletten Verzeichnisbaum mit Kompression archivieren (bspw. mit gzip), gehen Sie so vor:

user$ tar czvf Ubuntubuch_jan06.tgz Ubuntubuch

Dank der Option z wird jetzt das ganze Archiv auch noch komprimiert.

Ansehen können Sie sich das komprimierte Archiv weiterhin mit der Option t:

user$ tar tzf Ubuntubuch_jan06.tgz Ubuntubuch 
Ubuntuch/ 
Ubuntubuch/kapitel_1.tex 
…

Hier wurde also der absolute Pfadname verwendet. Entpacken und wieder einspielen können Sie das komprimierte Archiv wieder mit (mit Meldungen):

user$ tar xzvf Ubuntubuch_jan06.tgz Ubuntubuch

Wollen Sie allerdings nur Dateien mit der Endung ».tex« aus dem Archiv extrahieren, können Sie dies so vornehmen:

user$ tar xzf Ubuntubuch_jan06.tgz '*.tex'

zip/unzip – (De-)Komprimieren von Dateien

Mit zip können Sie einzelne Dateien bis hin zu ganzen Verzeichnissen komprimieren und archivieren. Besonders gern werden zip und unzip allerdings verwendet, weil diese gänzlich zu den Versionen von Windows und DOS kompatibel sind. Wer sich also immer schon geärgert hat, dass sein Mailanhang wieder einmal etwas im ZIP-Format enthält, kann hier auf unzip zurückgreifen. Ein ZIP-Archiv aus mehreren Dateien können Sie so erstellen:

user$ zip files.zip file1.txt file2.txt file3.txt 
  adding: file1.txt (deflated 56\%) 
  adding: file2.txt (deflated 46\%) 
  adding: file3.txt (deflated 24\%)

Hier packen und komprimieren Sie die Dateien zu einem Archiv namens files.zip. Wollen Sie eine neue Datei zum Archiv hinzufügen, nichts einfacher als das:

user$ zip files.zip hallo.c 
  adding: hallo.c (deflated 3\%)

Möchten Sie alle Dateien des Archivs in das aktuelle Arbeitsverzeichnis entpacken, dann tun Sie dies so:

user$ unzip files.zip 
Archive:  files.zip 
  inflating: file1.txt 
  inflating: file2.txt 
  inflating: file3.txt 
  inflating: hallo.c

Wenn Sie eine ganze Verzeichnishierarchie packen und komprimieren wollen, so müssen Sie die Option -r (rekursive) verwenden:

user$ zip -r Ubuntubuch.zip $HOME/Ubuntubuch 
…

Entpacken können Sie das Archiv wieder wie gewohnt mittels unzip.

Übersicht zu den Packprogrammen

In der folgenden Tabelle wird eine kurze Übersicht zu den Dateiendungen und den zugehörigen (De-)Komprimierungsprogrammen gegeben.


Endung gepackt mit entpackt mit
*.bz und *.bz2 bzip2 bzip2
*.gz gzip gzip, gunzip oder zcat
*.zip Info-Zip, PKZip, zip Info-Unzip, PKUnzip, unzip, gunzip (eineDatei)
*.tar tar tar
*.tbz tar und bzip2 tar und bzip2
*.tgz; *.tar.gz tar und gzip tar und g(un)zip
*.Z compress uncompress; gunzip
*.tar.Z tar und compress tar und uncompress
*.pak pack unpack, gunzip


Galileo Computing

X.2.8 Systeminformationen  downtop

cal – zeigt einen Kalender an

Das Kommando cal zeigt Ihnen einen Kalender wie folgt an:

user$ cal 
 Januar 2006 
So Mo Di Mi Do Fr Sa 
 1  2  3  4  5  6  7 
 8  9 10 11 12 13 14 
15 16 17 18 19 20 21 
22 23 24 25 26 27 28 
29 30 31

Ohne Angaben wird immer der aktuelle Monat aufgeführt. Wünschen Sie einen Kalender zu einem bestimmten Monat und Jahr, müssen Sie diese Syntax verwenden:

cal Monat Jahr

Wobei »Monat« und »Jahr« jeweils numerisch angegeben werden müssen. Den Kalender für April 2023 erhalten Sie so:

user$ cal 4 2023 
     April 2023 
So Mo Di Mi Do Fr Sa 
                   1 
 2  3  4  5  6  7  8 
 9 10 11 12 13 14 15 
16 17 18 19 20 21 22 
23 24 25 26 27 28 29 
30

date – Datum und Uhrzeit

Mit date lesen bzw. setzen Sie die Linux-Systemzeit. date wird weniger in der Kommandozeile als vielmehr in Shell-Skripten eingesetzt. date ist im Grunde »nur« ein Frontend für die C-Bibliotheksfunktion strftime(3). Dabei leitet man durch ein Pluszeichen einen Formatstring ein, der durch entsprechende Datumsangaben ergänzt wird. Die Ausgabe erfolgt anschließend auf die Standardausgabe. Ein Beispiel:

user$ date +'\%Y-\%m-\%d' 
2006–01–04

uname – Rechnername, Architektur und OS

Mit uname können Sie Betriebssystem, Rechnernamen, OS-Release und Version, Plattform, Prozessortyp und Hardwareklasse des Rechners anzeigen lassen. Hierzu rufen Sie uname mit der Option -a auf:

user$ uname -a 
Linux august 2.6.12–9-k7-smp #1 SMP Mon Oct 10 
13:58:43 BST 2005 i686 GNU/Linux

uptime – Laufzeit des Rechners

Das Kommando uptime zeigt die Zeit an, wie lange der Rechner bereits läuft.

user$ uptime 
15:07:38 up  3:36, 2 users, load average: …

Galileo Computing

24.2.9 System-Kommandos  downtop

dmesg – letzte Kernel-Boot-Meldungen

Wollen Sie sich die Kernel-Meldungen des letzten Bootvorgangs ansehen, können Sie sich diese mit dem Kommando dmesg anzeigen lassen. Dabei können Sie feststellen, welche Hardware beim Booten erkannt und initialisiert wurde. dmesg wird gern zur Diagnose verwendet, ob eine interne bzw. externe Hardware auch vom Betriebssystem korrekt erkannt wurde. Natürlich setzt dies auch entsprechende Kenntnisse der Hardware auf dem Computer und ihrer Bezeichnungen voraus.

halt – alle laufenden Prozesse beenden

Mit dem Kommando halt beenden Sie alle laufenden Prozesse. Damit wird das System komplett angehalten und reagiert auf keine Eingabe mehr. Selbstverständlich ist solch ein Befehl nur vom root ausführbar. Meistens ist halt ein Verweis auf shutdown.

reboot – System neu starten

Mit reboot werden alle noch laufenden Prozess auf dem System unverzüglich beendet und das System neu gestartet. Bei einem System im Runlevel 1 bis 5 wird hierzu ein shutdown aufgerufen. Selbstverständlich bleibt auch dieses Kommando dem root vorbehalten.

shutdown – System herunterfahren

Mit shutdown können Sie (root-Rechte vorausgesetzt) das System herunterfahren. Mit den Optionen -r und -h kann man zwischen einem »Halt« des Systems und einem »Reboot« auswählen. Damit das System ordentlich gestoppt wird, wird jedem Prozess zunächst das Signal SIGTERM gesendet, womit sich ein Prozess ordentlich beenden kann. Nach einer bestimmten Zeit (Standard ist zwei Sekunden oder einstellbar mit -t <SEKUNDEN>) wird das Signal SIGKILL an die Prozesse gesendet. Natürlich werden auch die Dateisysteme ordentlich abgehängt (umount), sync ausgeführt und in einen anderen Runlevel gewechselt. Die Syntax zu shutdown lautet:

shutdown [Optionen] Zeitpunkt [Nachricht]

Den Zeitpunkt zum Ausführen des shutdown-Kommandos können Sie entweder im Format hh:mm als Uhrzeit übergeben (bspw. 23:30) oder Sie können eine Angabe wie +m vornehmen, womit Sie die noch verbleibenden Minuten angeben (bspw. wird mit +5 in fünf Minuten der shutdown-Befehl ausgeführt). Ein sofortiger shutdown kann auch mit now bewirkt werden. Das Kommando shutdown benachrichtigt außerdem alle Benutzer, dass das System bald heruntergefahren wird, und lässt somit auch keine Neuanmeldungen zu. Hier können Sie eine eigene Nachricht an die Benutzer senden. Folgende Optionen stehen Ihnen zur Verfügung:


Option Bedeutung
-t Sekunden Zeitspanne in »Sekunden«, die zwischen den SIGTERM- und SIGKILL-Signalen zum Beenden von Prozessen gewartet wird
-k Hier wird kein Shutdown ausgeführt, sondern es werden nur Meldungen an alle anderen Benutzer gesendet.
-r (reboot) Neustart nach dem Herunterfahren
-h System anhalten nach dem Herunterfahren
-f Beim nächsten Systemstart keinen Dateisystem-Check ausführen
-F Beim nächsten Systemstart Dateisystem-Check ausführen
-c Wenn möglich, wird der laufende Shutdown abgebrochen.


Galileo Computing

X.2.10 Druckeradministration  downtop

Die Druckerbefehle werden aus Platzgründen nur mit Kommando und der jeweiligen Bedeutung beschrieben. Näheres müssen Sie hierbei den entsprechenden man-Seiten entnehmen.


Kommando Bedeutung
accept Druckerwarteschlange auf empfangsbereit setzen
cancel Druckaufträge stornieren
disable Drucker deaktivieren
enable Drucker aktivieren
lp Ausgabe auf dem Drucker mit dem Print-Spooler
lpadmin Verwaltungsprogramm für das CUPS-Print-Spooler-System
lpc Steuerung von Druckern
lphelp Optionen eines Druckers ausgeben
Kommando Bedeutung
lpmove Druckerauftrag zu einem anderen Drucker verschieben
lpq Druckerwarteschlange anzeigen
lpr Dateien auf den Drucker ausgeben
lprm Druckaufträge in der Warteschlange stornieren
lpstat Status der Aufträge anzeigen
reject Warteschlange für weitere Aufträge sperren


Galileo Computing

24.2.11 Netzwerkbefehle  downtop

Netzwerkbefehle erfordern ein tieferes Verständnis. Wenn Sie als Administrator mit Begriffen wie IP-Adresse, MAC-Adresse, DNS, FTP, SSH usw. nichts anfangen können, wäre eine fortführende Lektüre wichtig.

arp – Ausgeben von MAC-Adressen

Wenn Sie die Tabelle mit den MAC-Adressen der kontaktierten Rechner benötigen, können Sie das Kommandos arp verwenden. Ein Beispiel:

user$ arp -a 
fritz.box (192.168.0.254) auf 00:04:0E:A5:F5:4E 
[ether] auf eth0

Im obigen Fall ist der Rechner über eine DSL-Modem/Routerkombination an das Internet angeschlossen, eine so genannte FritzBox. Die MAC-Adresse ist hierbei die sechsstellige Hexadezimalzahl

»00:04:0E:A5: F5:4E«. Benötigen Sie hingegen die MAC-Nummer Ihrer eigenen Netzwerkkarte, so können Sie diese mit ifconfig ermitteln:

user$ ifconfig -a 
eth0      Protokoll:Ethernet 
Hardware Adresse 00:0E:A6:86:03:CF 
…

In der Zeile »eth0« finden Sie hierbei die entsprechende MAC-Adresse unter »Hardware Adresse«.

ftp – Dateien übertragen

Mit Hilfe von ftp (File Transfer Protocol) können Sie Dateien innerhalb eines Netzwerks (bspw. Internet) zwischen verschiedenen Rechnern transportieren.

Da ftp über eine Menge Features und Funktionen verfügt, soll hier nur auf den Hausgebrauch eingegangen werden, und zwar wie man Daten von einem entfernten Rechner abholt und hinbringt. Zunächst müssen Sie sich auf dem Server einloggen. Dies geschieht üblicherweise mit

ftp Server_Name

Nachdem ftp eine Verbindung mit dem Server aufgenommen hat, werden Sie aufgefordert, Ihren Benutzernamen und anschließend das Passwort einzugeben. Wenn alles korrekt war, befindet sich vor dem Prompt ftp> und wartet auf weitere Anweisungen. Jetzt können Sie im Eingabeprompt Folgendes machen:

  • Gewünschtes Verzeichnis durchsuchen: cd, dir, lcd (lokales Verzeichnis)
  • FTP-Parameter einstellen: type binary, hash, prompt
  • Datei(en) abholen: get, mget
  • Datei(en) hinbringen: put, mput
  • Abmelden: bye oder exit

Natürlich bietet ftp weitaus mehr Befehle als diese an, aber alles andere würde hier über den Rahmen des Buchs hinausgehen. Im Folgenden soll der Umgang mit FTP anhand eines Beispiels erläutert werden.

Zunächst loggen Sie sich per FTP auf einen Server ein:

user$ ftp upload.meinserver.de 
Connected to upload.meinserver.de. 
220 Welcome to FTP service. 
Name (upload.meinserver.de:hatt): <Mein Login> 
331 Please specify the password. 
Password: 
230 Login successful. Have fun. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp>

Zunächst werden Sie sich wohl das Inhaltverzeichnis ansehen wollen. Hierzu können Sie den Befehl dir (der auf Linux-Systemen meistens dem Aufruf von [ls -l entspricht) zum Auflisten verwenden:

user$ ftp> dir 
200 PORT command successful. Consider using PASV. 
150 Here comes the directory listing. 
drwxr-xr-x  9 1092  1091   4096 Dec 17 15:31 . 
drwxr-xr-x  8 0     0      4096 Mar 07  2005 .. 
drwxr-xr-x  5 1092  1091   4096 Sep 04  2001 OLD 
drwxr-xr-x  3 1092  1091   4096 Sep 03  2001 counter 
drwxr-xr-x  8 1092  1091   4096 Sep 02  2001 daten 
…

Wollen Sie nun in ein Verzeichnis wechseln, können Sie auch hier das schon bekannte Kommando cd verwenden. Ebenso sieht es aus, wenn Sie das aktuelle Arbeitsverzeichnis wissen wollen, in dem Sie sich gerade befinden. Hier leistet das bekannte pwd seine Dienste. Das aktuelle Verzeichnis auf dem lokalen Rechner können Sie mit dem Kommando lcd wechseln. Sie können übrigens auch die Befehle auf Ihrem lokalen Rechner verwenden, wenn Sie ein !-Zeichen davor setzen. Hierzu ein Beispiel, das die Befehle nochmals demonstriert.

ftp> pwd 
257 "/htdocs" 
ftp> cd daten 
250 Directory successfully changed. 
ftp> pwd 
257 "/htdocs/daten" 
ftp> !pwd 
/home/hatt 
ftp> lcd text 
Local directory now /home/hatt/text 
ftp>

Hier befinden wir uns auf dem Remoterechner im Verzeichnis daten, lokal sind wir mittels lcd in das Verzeichnis text gewechselt. Im entfernten Verzeichnis soll sich die Datei server.txt befinden, die wir auf den Server befördern wollen. Das geschieht mit dem Kommando get:

user$ ftp> get server.txt 
local: server.txt remote: server.txt 
200 PORT command successful 
150 Opening BINARY mode data connection 
server.txt (3231 bytes) 
226 Transfer complete.

Und schon haben wir die Datei server.txt auf den lokalen Rechner ins Verzeichnis text kopiert. Wollen Sie mehrere Dateien oder gar ganze Verzeichnisse holen, müssen Sie mget verwenden. Hierbei stehen Ihnen auch die Wildcard-Zeichen * und ? zur Verfügung. Da mget Sie bei mehreren Dateien nicht jedes Mal fragt, ob Sie diese wirklich holen wollen, können Sie den interaktiven Modus mit prompt abstellen.

Haben Sie jetzt die Datei server.txt bearbeitet und wollen diese wieder hochladen, verwenden Sie put (oder bei mehreren Dateien mput).

ftp> put server.txt 
local: server.txt remote: server.txt 
200 PORT command successful 
150 Opening BINARY mode data connection 
for server.txt 
226 Transfer complete. 
3231 bytes sent in 0.000106 secs

Damit sollten Sie erfolgreich Dateien ein- und auschecken können. Sie verlassen das System wieder mittels quit, bye oder exit.

Bedenken Sie, dass ftp nicht ganz sicher ist, da Sie bei der Authentifizierung das Passwort unverschlüsselt übertragen.

hostname – Rechnername ermitteln

Das Kommando hostname können Sie verwenden, um den Namen des lokalen Rechners anzuzeigen bzw. zu setzen oder zu verändern. So ein Name hat eigentlich erst im Netzwerkbetrieb seine echte Bedeutung. Im Netz besteht ein vollständiger Rechnername (Fully Qualified Domain Name) aus einem Eigennamen und einem Domainnamen. Der (DNS-) Domainname bezeichnet das lokale Netz, an dem der Rechner hängt.

Ohne Angabe einer Option wird der vollständige Rechnername ausgegeben. Mit der Option -s geben Sie nur den Eigennamen des Rechners aus und mit

-d nur den (DNS-)Domainnamen des lokalen Netzes.

user$ hostname 
ripley.nostromo.com 
user$ hostname -s 
ripley 
user$ hostname -d 
nostromo.com

ifconfig – Netzwerkzugang konfigurieren

Mit dem Kommando ifconfig kann man die Einstellungen einer Netzwerk-Schnittstelle abfragen oder setzen. Alle Einstellungen können Sie sich mit der Option -a anzeigen lassen, dabei werden auch die inaktiven Schnittstellen aufgelistet. Die Syntax zu ifconfig:

ifconfig Schnittstelle [Addresse [Parameter]]

Dabei geben Sie den Namen der zu konfigurierenden Schnittstelle an. Befindet sich bspw. auf Ihrem Rechner eine Netzwerkkarte, so lautet unter Linux die Schnittstelle hierzu »eth0«, die zweite Netzwerkkarte im Rechner (sofern eine vorhanden ist) wird mit »eth1« angesprochen. Die »Adresse« ist die IP-Adresse, die der Schnittstelle zugewiesen werden soll. Hierbei kann man die Dezimalnotation (xxx.xxx.xxx.xxx) verwenden oder einen Namen, den ifconfig in /etc/host nachschlägt.

Verwenden Sie ifconfig ohne die Option -a, um sich einen Überblick zu verschaffen, dann werden die inaktiven Schnittstellen nicht mit angezeigt. Der Aufruf für die Schnittstelle zu Ethernetkarte »eth0« sieht beispielsweise wie folgt aus:

user$ ifconfig 
eth0 
Link encap:Ethernet  HWaddr 00:02:2A:D4:2C:EB 
inet addr:192.168.1.1 
Bcast:192.168.1.255  Mask:255.255.255.0 
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
RX packets:80 errors:0 dropped:0 overruns:0 frame:0 
TX packets:59 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:100 
RX bytes:8656 (8.4 KiB)  TX bytes:8409 (8.2 KiB) 
Interrupt:11 Base address:0xa000 
 
lo 
Link encap:Local Loopback 
inet addr:127.0.0.1  Mask:255.0.0.0 
UP LOOPBACK RUNNING  MTU:16436  Metric:1 
RX packets:8 errors:0 dropped:0 overruns:0 frame:0 
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 
collisions:0 txqueuelen:0 
RX bytes:560 (560.0 b)  TX bytes:560 (560.0 b) 
…

Wenn IPv6 konfiguriert ist, kommt noch die IPv6-Adresse dazu.

Aus der Ausgabe kann man entnehmen, dass auf dieser Netzwerkkarte 59 Pakete gesendet (TX) und 80 empfangen (RX) wurden. Die maximale Größe einzelner Pakete beträgt 1500 Byte (MTU). Die MAC-Adresse (Hardwareadresse), die unsere Netzwerkkarte eindeutig identifiziert (außer diese wird manipuliert) lautet »00:02:2A:D4:2C:EB«.

Wollen Sie eine Schnittstelle ein- bzw. ausschalten, können Sie dies mit den zusätzlichen Parametern up (für Einschalten) und down (für Abschalten) vornehmen. Als Beispiel wieder die Netzwerkkarte mit dem Namen

»eth0« als Schnittstelle:

user$ sudo ifconfig eth0 down

Hier haben Sie die Netzwerkkarte »eth0« abgeschaltet. Einschalten können Sie diese folgendermaßen:

user$ sudo ifconfig eth0 up

Eine IP-Adresse stellen Sie ein oder verändern Sie ebenfalls mit ifconfig:

user$ sudo ifconfig eth0 192.18.19.91

Wollen Sie bei der Schnittstelle die Netzmaske und Broadcast verändern, so ist dies mit ifconfig wenig Arbeit (unterlassen Sie es, wenn Sie nicht genau wissen, was die Netzmaske und Broadcast sind):

user$ sudo ifconfig eth0 10.25.38.41 netmask \ 
  255.255.255.0 broadcast 10.25.38.255

Damit weisen Sie der Netzwerkkarte die IP-Adresse 10.25.38.41 aus dem Netz

10.25.38.xxx zu. Mit »netmask« geben Sie an, wie groß das Netz ist (hier ein Netzwerk der Klasse C).

mail/mailx – E-Mails schreiben und empfangen

Mit dem Kommando mail können Sie aus einem Shell-Skript heraus E-Mails versenden. Zuvor muss für Ubuntu allerdings noch die Postfix-Konfiguration angepasst werden, Näheres entnehmen Sie der Dokumentation zu Postfix. Mithilfe der Option -s können Sie dann eine einfache Textmail mit Betreff (-s = Subject) an eine Adresse schicken, beispielsweise:

user$ echo "Hallo" | mail -s "Betreff" rhatt@gmx.de

Da nicht alle mail-Kommandos die Option -s für einen Betreff haben, können Sie gegebenenfalls auch auf mailx oder Mail (mit großen »M«) zurückgreifen, die auf einigen Systemen vorhanden sind. Mit cat können Sie natürlich auch den Inhalt einer ganzen Datei an die Mailadresse senden:

user$ cat datei.txt | mail -s "Ein Textdatei" \ 
rhatt@gmx.de

Dabei kann man auch die Ausgaben eines Kommandos per mail an eine Adresse versenden:

user$ ps -ef | mail -s "Prozesse 12Uhr" \ 
rhatt@gmx.de

Sinnvoll kann dies z. B. sein, wenn auf einem System ein bestimmtes Limit überschritten wurde. Dann können Sie sich (oder einem anderen Benutzer) eine Nachricht zukommen lassen. Ebenso kann überprüft werden, ob ein Server dauerhaft verfügbar ist. Testen Sie etwa stündlich (bspw. mit cron) mittels nmap (hier kann man nicht nur nachsehen, ob die Netzwerkkarte das UDP-Paket zurückschickt, sondern auch direkt nachschauen, ob der Port des betreffenden Dienstes noch offen ist), ob der Server erreichbar ist, und ist er es einmal nicht, können Sie sich hierbei eine Nachricht zukommen lassen.

Zusätzliche Optionen, die Sie mit mail bzw. mailx verwenden können, sind:


Option Bedeutung
-s Betreff Hier können Sie den Betreff (Subject) der E-Mail angeben.
-c adresse Diese Adresse bekommt eine Kopie der Mail.
-b adresse Diese Adresse bekommt eine blind carbon copy der Mail.

netstat – Statusinformationen über das Netzwerk

Für die Anwendung von netstat gibt es viele Möglichkeiten. Mit einem einfachen Aufruf von netstat zeigen Sie den Zustand einer bestehenden Netzwerkverbindung an. Neben der Überprüfung von Netzwerkverbindungen können Sie mit netstat Routentabellen, Statistiken zu Schnittstellen, maskierte Verbindungen und noch vieles mehr anzeigen lassen. In der Praxis lässt sich somit ohne Problem die IP oder der Port eines ICQ-Users (Opfer) ermitteln oder ob ein Rechner mit einen Trojaner infiziert ist. Hier einige Beispiele:

user$ netstat -nr

Hiermit lassen Sie die Routing-Tabelle (-r) des Kernels ausgeben.

user$ netstat -i

Mit der Option -i erhalten Sie die Schnittstellenstatistik.

user$ netstat -ta

Mit -ta erhalten Sie die Anzeige aller Verbindungen. Die Option

-t steht dabei für TCP. Mit -u, -w bzw.

-x zeigen Sie die UDP-, RAW- bzw. UNIX-Sockets an. Mit -a werden dabei auch die Sockets angezeigt, die noch auf eine Verbindung warten.

nslookup (host/dig) – DNS-Server abfragen

Mit nslookup können Sie aus dem Domainnamen eine IP-Adresse bzw. die IP-Adresse zu einem Domainnamen ermitteln. Zur Auflösung des Namens wird gewöhnlich der DNS-Server verwendet.

Bei der Verwendung von nslookup werden Sie lesen, dassnslookup künftig von den Kommandos host oder dig abgelöst wird.

Hier nslookup und host bei der Ausführung über einen vorgeschalteten Router (IP: 192.168.0.254):

user$ nslookup www.google.de 
Server:         192.168.0.254 
Address:        192.168.0.254#53 
Non-authoritative answer: 
… 
Name:   www.l.google.com 
Address: 66.249.93.104 
Name:   www.l.google.com 
Address: 66.249.93.99
user$ host www.google.de 
www.google.de is an alias for www.google.com. 
www.google.com is an alias for www.l.google.com. 
www.l.google.com has address 64.233.183.104

ping – Verbindung zu anderem Rechner testen

Wollen Sie die Netzwerkverbindung zu einem anderen Rechner testen oder einfach nur den lokalen TCP/IP-Stack überprüfen, können Sie das Kommando ping (Paket Internet Groper) verwenden. Die Syntax lautet:

ping Host

ping überprüft dabei, ob »Host« (IP-Adresse oder Domainname) antwortet. ping bietet noch eine Menge Optionen an, die noch mehr Infos liefern, die allerdings hier nicht genauer erläutert werden. Zur Überprüfung sendet ping ein ICMP-Paket vom Typ ICMP Echo Request an die Netzwerkstation. Hat die Netzwerkstation das Paket empfangen, sendet es ebenfalls ein ICMP-Paket, allerdings vom Typ ICMP Echo Reply, zurück.

user$ ping -c3 www.google.de 
PING www.l.google.com (66.249.93.104) 56(84) bytes 
64 bytes from 66.249.93.104: icmp_seq=1 time=74.8 ms 
64 bytes from 66.249.93.104: icmp_seq=2 time=75.3 ms 
64 bytes from 66.249.93.104: icmp_seq=3 time=75.5 ms 
 
--- www.l.google.com ping statistics --- 
3 packets transmitted, 3 received, 0\% packet loss, 
time 2002ms 
rtt min/avg/max/mdev = 74.831/75.249/75.575/0.443 ms

Hier wurden drei Pakete (mit der Option -c kann die Anzahl der Pakete angegeben werden) an http://www.google.de gesendet und wieder erfolgreich empfangen, wie aus der Zusammenfassung am Ende zu entnehmen ist. Rufen Sie ping hingegen ohne eine Option auf

user$ ping www.google.de

so müssen Sie selbst für eine Beendigung des Datenaustausches zwischen den Rechnern sorgen. Ein einfaches (Strg) + (C) tut da seinen Dienst und man erhält ebenfalls wieder eine Zusammenfassung. Neben der Möglichkeit, auf die Verfügbarkeit eines Rechners und des lokalen TCP/IP-Stacks zu prüfen (ping localhost), können Sie außerdem auch die Laufzeit von Paketen vom Sender zum Empfänger ermitteln. Hierzu wird die Zeit halbiert, bis das »Reply« eintrifft.

Die r-Kommandos (rcp, rlogin, rsh)

Aus Sicherheitsgründen sei empfohlen, diese Tools nicht mehr einzusetzen und stattdessen auf die mittlerweile sichereren Alternativen ssh und scp zu setzen. Es fängt schon damit an, dass hier das Passwort beim Einloggen im Klartext, ohne jede Verschlüsselung, übertragen wird. Bedenken Sie, dass ein unverschlüsseltes Passwort, das zwischen zwei Rechnern im Internet übertragen wird, jederzeit (bspw. mit einem »Sniffer«) abgefangen und mitgelesen werden kann. Für Passwörter gilt im Allgemeinen, dass man diese niemals im Netz unverschlüsselt übertragen sollte. Da es mittlerweile Möglichkeiten zur Passwortübertragung mit der Secure Shell (ssh) gibt, haben die r-Kommandos eigentlich keine Berechtigung mehr.

Schlimmer noch, für die Befehle rsh und rcp war auf den Zielrechnern nicht einmal ein Passwort nötig. Eine Authentifizierung erfolgte hierbei über die Datei /etc/hosts.equiv und /.rhosts. Darin wurden einzelne Rechner eingetragen, die als vertrauenswürdig empfunden wurden und so die Passwort-Authentifizierung umgehen konnten.

ssh – sichere Shell auf anderem Rechner starten

ssh (Secure Shell) zählt mittlerweile zu einem der wichtigsten Dienste überhaupt. Mit diesem Dienst ist es möglich, eine verschlüsselte Verbindung zwischen zwei Rechnern aufzubauen. ssh wurde aus der Motivation heraus entwickelt, sichere Alternativen zu telnet und den r-Kommandos zu schaffen.

Wenn Sie zum ersten Mal eine Verbindung zu einem anderen Rechner herstellen, bekommen Sie gewöhnlich eine Warnung, in der ssh nachfragt, ob Sie dem anderen Rechner vertrauen wollen. Wenn Sie mit »yes« antworten, speichert ssh den Namen und den RSA-Fingerprint (dies ist ein Code zur eindeutigen Identifizierung des anderen Rechners) in der Datei

/.ssh/known_hosts. Beim nächsten Starten von ssh erfolgt diese Abfrage dann nicht mehr.

Im nächsten Schritt erfolgt die Passwortabfrage, die verschlüsselt übertragen wird. Bei korrekter Eingabe des Passworts beginnt die Sitzung am anderen Rechner (als hätte man diesen Rechner vor sich). Die Syntax:

ssh -l Loginname Rechnername

Noch ein paar Zeilen für die ganz Ängstlichen: Für jede Verbindung über ssh wird zwischen den Rechnern immer ein neuer Sitzungsschlüssel ausgehandelt. Will man einen solchen Schlüssel knacken, benötigt der Angreifer unglaublich viel Zeit. Sobald Sie sich ausloggen, müsste der Angreifer erneut versuchen, den Schlüssel zu knacken. Dies natürlich nur rein theoretisch, denn hierbei handelt es sich immerhin um Schlüssel wie RSA, BLOWFISH, IDEA und TRIPLEDES, zwischen denen man hier wählen kann. Alle diese Schlüssel gelten als sehr sicher.

scp – Dateien per ssh kopieren

Das Kommando scp ist Teil einer ssh-Installation, mit der man Dateien sicher zwischen unterschiedlichen Rechnern kopieren kann. scp funktioniert genauso wie das lokale cp. Der einzige Unterschied ist natürlich die Angabe der Pfade auf den entfernten Rechnern. Dabei sieht die Verwendung des Rechnernamens wie folgt aus:

benutzer@rechner:/verzeichnis/zum/ziel

Um auf einen Account meinserver.de zu gelangen, dessen Benutzername

»meinlogin« lautet, ist folgendermaßen zu verfahren:

user$ scp datei.txt meinlogin@meinserver.de:~ 
meinlogin@meinserver.de's password:******** 
datei.txt        100\% 3231 
   3.2KB/s   00:00 
user$ scp meinlogin@meinserver.de:~/bilder/bild.gif \ 
$HOME 
meinlogin@meinserver.de's password:******** 
baum.gif         100\% 
8583 
   8.4KB/s   00:00

Zuerst wurde die Datei datei.txt aus dem aktuellen lokalen Verzeichnis ins Heimverzeichnis von meinserver.de kopiert (/home/mein login). Anschließend wurde aus dem Verzeichnis /home/meinlogin/ bilder die GIF-Datei bild.gif auf meinen lokalen Rechner kopiert. scp ist in der Tat eine interessante Lösung, um Dateien auf mehreren Rechnern mit einem Skript zu kopieren.

Was allerdings bei der Skriptausführung stören dürfte (besonders wenn es automatisch geschehen sollte), ist die Passwortabfrage (hierbei würde der Prozess angehalten). Hierzu bietet es sich an, sich mithilfe eines asymmetrischen Verschlüsselungsverfahrens ein Login ohne Passwort zu verschaffen. Dazu stellt man am besten auf dem Clientrechner mit dem Programm ssh-keygen ein entsprechendes Schlüsselpaar (hier mit einem RSA-Schlüssel) bereit:

user$ ssh-keygen -t rsa 
Generating public/private rsa key pair. 
Enter file in which to save the key 
(/home/hatt/.ssh/id_rsa): (Enter) 
Enter passphrase (empty for no passphrase): (Enter) 
Enter same passphrase again: (Enter) 
Your identification has been saved 
in /home/hatt/.ssh/id_rsa. 
Your public key has been saved 
in /home/hatt/.ssh/id_rsa.pub. 
The key fingerprint is: 
46:85:12:80:9d:a7:62:01:18:0f:1c:a0:27:61:a2:94 
hatt@august

Hier wurden zwei RSA-Schlüssel ohne Passphrase erstellt. Jetzt haben Sie zwei Schlüssel, eine privaten (id_rsa.) und einen öffentlichen (id_ rsa.pub). Damit Sie jetzt alle ssh-Aktionen ohne Passwort durchführen können, müssen Sie den öffentlichen Schlüssel nur noch auf den Benutzeraccount des Servers hochladen.

user$ scp .ssh/id_rsa.pub \ 
meinlogin@meinserver.de:~/.ssh/ 
meinlogin@meinserver.de.de's password:******** 
id_rsa.pub              100\%  219 
   0.2KB/s   00:00

Jetzt nochmals einloggen und die Datei id_rsa.pub an die Datei

~/.ssh/authorized_keys hängen:

user$ ssh meinlogin@meinserver.de 
meinlogin@meinserver.de's password:******** 
… 
user$ cd ~/.ssh 
user$ ls 
id_rsa.pub  known_hosts 
user$ cat id_rsa.pub >> authorized_keys

Nach erneutem Einloggen über ssh oder dem Kopieren mit scp sollte die Passwortabfrage der Vergangenheit angehören.

rsync – Replizieren von Dateien und Verzeichnissen

rsync wird verwendet, um Dateien bzw. ganze Verzeichnis(bäume) zu synchronisieren. Hierbei kann sowohl eine lokale als auch eine entfernte Synchronisation vorgenommen werden.

Der Ausdruck »synchronisieren« ist eigentlich rein syntaktisch nicht richtig. Man kann zwar bei einem Verzeichnisbaum »X« Daten hinzufügen, so dass dieser exakt denselben Inhalt erhält wie der Verzeichnisbaum »Y«. Dies funktioniert allerdings umgekehrt gleichzeitig nicht. Man spricht hierbei vom Replizieren. Die Syntax zu rsync lautet:

rsync [Optionen] Ziel Quelle

Einige Beispiele:

user$ rsync -avzb -e ssh meinserver.de:/ \ 
/home/hatt/backups/

Damit wird die Webseite im Internet meinserver.de mit dem lokalen Verzeichnis /home/hatt/backups synchronisiert. Mit a verwenden Sie den archive-Modus, mit b werden Backups erstellt und mit v (für verbose) wird rsync etwas gesprächiger. Durch die Option z werden die Daten komprimiert übertragen. Außerdem wird mit der Option -e und ssh eine verschlüsselte Datenübertragung verwendet.

Geben Sie bei der Quelle als letztes Zeichen einen Slash (/) an, wird dieses Verzeichnis nicht mitkopiert, sondern nur der darin enthaltene Inhalt, beispielsweise:

user$ rsync -av /home/hatt/ubuntubuch/ \ 
/home/hatt/backups

Hier wird der Inhalt von /home/hatt/ubuntubuch nach

/home/hatt /backups kopiert. Würden Sie hingegen Folgendes schreiben

user$ rsync -av /home/hatt/ubuntubuch \ 
/home/hatt/backups

so würde in /home/hatt/backups das Verzeichnis ubuntubuch angelegt (/home/hatt/backups/ubuntubuch/) und alles dorthin kopiert. Das hat schon viele einige Nerven gekostet.

Es folgt nun ein Überblick zu einigen Optionen von rsync. Weiterführende Informationen zu rsync finden Sie auf der entsprechenden Webseite von rsync (http://rsync.samba.org) oder wie üblich auf der Manual-Seite.


Option Bedeutung
-a (archive mode): Kopiert alle Unterverzeichnisse, mitsamt Attributen (Symlinks, Rechte, Dateidatum, Gruppe, Devices) und (wenn man root ist) den Eigentümer der Datei(en)
-v (verbose): Gibt während der Übertragung eine Liste der übertragenen Dateien aus
-n (dry-run): Nichts schreiben, sondern den Vorgang nur simulieren – ideal zum Testen
-e Programm Wenn in der Quelle oder dem Ziel ein Doppelpunkt enthalten ist, interpretiert rsync den Teil vor dem Doppelpunkt als Hostnamen und kommuniziert über das mit -e spezifizierte Programm. Gewöhnlich wird hierbei als Programm ssh verwendet. Weitere Parameter können Sie diesem Programm in Anführungszeichen gesetzt übergeben.
-z Der Parameter -z bewirkt, dass rsync die Daten komprimiert überträgt.
--delete --force, --delete-excluded Damit werden alle Einträge im Zielverzeichnis gelöscht, die im Quellverzeichnis nicht (mehr) vorhanden sind.
--partial Wurde die Verbindung zwischen zwei Rechnern getrennt, wird die nicht vollständig empfangene Datei nicht gelöscht. So kann bei einem erneuten rsync die Datenübertragung fortgesetzt werden.
--exclude=Pattern Hier kann man Dateien (mit Pattern) angeben, die man ignorieren möchte. Selbstverständlich sind hierbei reguläre Ausdrücke möglich.
-x Damit werden alle Dateien auf einem Filesystem ausgeschlossen, die in ein Quellverzeichnis hineingemountet sind.

traceroute – Route zu einem Rechner verfolgen

traceroute ist ein TCP/IP-Tool, mit dem Informationen darüber ermittelt werden können, welche Computer ein Datenpaket über ein Netzwerk passiert, bis es bei einem bestimmten Host ankommt, z. B.:

user$ traceroute www.heise.de 
traceroute to www.heise.de (193.99.144.85), 
30 hops max, 38 byte packets 
1  fritz.box (192.168.0.254)  0.660 ms  6.143 ms 
2  217.0.116.165 (217.0.116.165) 32.240 ms 32.623 ms 
3  217.0.71.242 (217.0.71.242) 32.934 ms 33.571 ms 
4  m-ec1.M.DE.net.DTAG.DE (62.154.28.26) 46.186 ms 
…

Galileo Computing

24.2.12 Benutzerkommunikation  downtop

wall – Nachrichten an alle Benutzer verschicken

Mit dem Kommando wall senden Sie eine Nachricht an alle aktiven Benutzer auf dem Rechner. Damit ein Benutzer auch Nachrichten empfangen kann, muss dieser mit mesg yes diese Option einschalten. Natürlich kann ein Benutzer das Empfangen von Nachrichten auch mit mesg no abschalten. Nachrichten werden nach einem Aufruf von wall von der Standardeingabe eingelesen und mit der Tastenkombination (Strg) + (D) abgeschlossen und versendet. Gewöhnlich wird wall vom Systemadministrator verwendet, um den Benutzer auf bestimmte Ereignisse, wie etwa das Neustarten des Systems, hinzuweisen.

write – Nachrichten an Benutzer verschicken

Ähnlich wie mit wall können Sie mit write eine Nachricht versenden, allerdings an einen bestimmten oder mehrere Benutzer.

user$ wall Benutzer1 …

Ansonsten gilt bei der Verwendung von write das Gleiche wie für wall. Auch hier wird die von der Standardeingabe eingelesene Nachricht mit (Strg) + (D) beendet und auf der Gegenstelle muss auch hier mesg yes gelten, damit der Benutzer die Nachricht empfangen kann. Natürlich ist es dem Benutzer root gestattet, jedem Benutzer eine Nachricht zu senden, auch wenn dieser das Empfangen von Nachrichten mit mesg no abgeschaltet hat.

mesg – Nachrichten zulassen oder unterbinden

Mit dem Kommando mesg können Sie einem anderen Benutzer erlauben, auf das Terminal (bspw. mittels write oder wall) zu schreiben oder eben dies zu sperren. Rufen Sie mesg ohne Optionen auf, wird so ausgegeben, wie die Zugriffsrechte gesetzt sind y (für yes) und n (für no). Wollen Sie dem Benutzer explizit erlauben, dass er auf Ihre Dialogstation schreiben darf, können Sie dies mit mesg folgendermaßen erreichen:

user$ mesg yes

oder

user$ mesg -y

Wollen Sie hingegen unterbinden, dass jemand Nachrichten auf Ihre Dialogstation ausgibt, wird mesg so verwendet:

user$ mesg no

oder

user$ mesg -n

Beispielsweise:

user$ mesg 
is n 
user$ mesg yes 
user$ mesg 
ist y

Galileo Computing

24.2.13 Bildschirm- und Terminalkommandos  downtop

clear – Löschen des Bildschirms

Mit dem Kommando clear löschen Sie den Bildschirm, sofern dies möglich ist. Das Kommando sucht in der Umgebung nach dem Terminaltyp und dann in der terminfo-Datenbank, um herauszufinden, wie der Bildschirm für das entsprechende Terminal gelöscht wird.

reset – Zeichensatz wiederherstellen

Mit dem Kommando reset können Sie jedes virtuelle Terminal wieder in einen definierten Zustand (zurück) setzen.

setterm – Terminaleinstellung verändern

Mit setterm können die Terminaleinstellungen wie bspw. die Hintergrund- bzw. Vordergrundfarbe verändert werden. Ruft man setterm ohne Optionen auf, erhält man einen Überblick zu allen möglichen Optionen von setterm. Sie können setterm entweder interaktiv verwenden

user$ setterm -bold on

(hier schalten Sie bspw. die Fettschrift an) oder aber Sie sichern die Einstellungen dauerhaft in der Datei ~/.profile. Einige wichtige Einstellungen von setterm sind:


Verwendung Bedeutung
setterm -clear Löscht den Bildschirm
setterm -reset Terminal wieder in einen defnierten Zustand zurückbringen
setterm -blank n Bildschirm nach n Minuten Untätigkeit abschalten

stty – Terminaleinstellung abfragen oder setzen

Mit stty können Sie die Terminaleinstellung abfragen oder verändern. Rufen Sie stty ohne Argumente auf, wird die Leitungsgeschwindigkeit des aktuellen Terminals ausgegeben. Wenn Sie stty mit der Option -a aufrufen, erhalten Sie die aktuelle Terminaleinstellung.

user$ stty -a 
speed 38400 baud; rows 24; columns 80; line = 0; 
intr = ^C; quit = ^\; erase = ^?; kill = ^U; 
eof = ^D; eol = M-^?; eol2 =M-^?; start = ^Q; 
stop = ^S; susp = ^Z; rprnt =^R; werase = ^W; 
lnext = ^V; flush = ^O; min = 1; time = 0; 
-parenb -parodd cs8 hupcl -cstopb cread -clocal 
-crtscts -ignbrk brkint -ignpar -parmrk -inpck 
-istrip -inlcr -igncr icrnl ixon -ixoff -iuclc 
ixany imaxbel opost -olcuc -ocrnl onlcr -onocr 
-onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 
isig icanon iexten echo echoe echok -echonl 
-noflsh -xcase -tostop -echoprt echoctl echoke

Die Einstellungen lassen sich häufig schwer beschreiben. Hierzu bedarf es schon einer intensiveren Beschäftigung mit der Funktionsweise zeichenorientierter Gerätetreiber im Kernel und der seriellen Schnittstelle

– was hier allerdings nicht zur Diskussion steht.

Alle Flags, die sich mit stty verändern lassen, können Sie sich mit stty --help auflisten lassen. Viele dieser Flags lassen sich mit einem vorangestellten Minus abschalten und ohne ein Minus (wieder) aktivieren. Wenn Sie beim Ausprobieren der verschiedenen Flags das Terminal nicht mehr vernünftig steuern können, hilft Ihnen das Kommando reset oder setterm -reset, um das Terminal wiederherzustellen. Über

user$ stty -echo

beispielsweise schalten Sie die Ausgabe des Terminals ab und mit

user$ stty echo

stellen Sie die Ausgabe auf dem Bildschirm wieder her. Allerdings müssen Sie hier recht sicher im Umgang mit der Tastatur sein, weil Sie ja zuvor die Ausgabe deaktiviert haben.

tty – Terminalnamen erfragen

Mit tty können Sie den Terminalnamen inklusive Pfad erfragen, der die Standardeingabe entgegennimmt.

user$ tty 
/dev/pts/1

Verwenden Sie die Option -s, erfolgt keine Ausgabe, vielmehr wird nur der Status gesetzt. Dabei haben diese Werte folgende Bedeutung:


Status Bedeutung
0 Standardeingabe ist ein Terminal.
1 Standardeingabe ist kein Terminal.
2 Ein unbekannter Fehler ist aufgetreten.

Ein Beispiel:

user$ tty -s 
user$ echo $? 
0

Galileo Computing

24.2.14 Online-Hilfen  downtop

apropos – nach Schlüsselwörtern suchen

Die Syntax für apropos lautet:

apropos Schlüsselwort

Mit apropos werden alle man-Seiten aufgelistet, in denen sich das Wort »Schlüsselwort« befindet. Selbiges kann auch mit dem Kommando man und der Option -k erreicht werden. Ein Beispiel:

user$ apropos bluetooth 
/etc/bluetooth/hcid.conf (5) [hcid.conf] - 
Configuration file for the hcid 
Bluetooth HCI daemon 
avctrl (8)  – Bluetooth Audio/Video control utility 
bluepin (1) – bluetooth PIN helper 
ciptool (1) – Bluetooth Common ISDN Access Profile 
…

info – GNU-Online-Manual

info ist das Hilfesystem für die bei Linux mitgelieferte GNU-Software:

user$ info Kommando

Die wichtigsten Tasten zum Verwenden der Infoseiten sind:


Taste Bedeutung
(____) Eine Seite nach unten blättern
(æ___) Eine Seite nach oben blättern
(B) Anfang des info-Textes
(E) Ende des info-Textes
(ÿ) Zum nächsten Querverweis springen
(¢) Querverweis folgen
(H) Anleitung zur Bedienung von info
(?) Kommandoübersicht von info
(Q) info beenden

man – die traditionelle Onlinehilfe

Mit man geben Sie die Manual-Seiten zu einem entsprechenden Namen aus:

man Name

Die Anzeige der man-Seite erfolgt über einen Pager, was meistens less oder eventuell auch more ist. Den Pager können Sie aber auch mit der Option -P oder der Umgebungsvariablen PAGER selbst bestimmen.

Die man-Seiten werden in verschiedene Kategorien aufgeteilt:

1. 1. Benutzerkommandos
       
2. 2. Systemaufrufe
       
3. 3. C-Bibliotheksfunktionen
       
4. 4. Beschreibungen der Gerätedateien
       
5. 5. Dateiformate
       
6. 6. Spiele
       
7. 7. Makropakete für die Textformatierer
       
8. 8. Kommandos für den Systemverwalter
       
9. 9. Kernelroutinen
       

Die Reihenfolge, in der die Sektionen nach einer Manual-Page durchsucht werden, ist in der Konfigurationsdatei

/etc/man path.config festgelegt. In der MANSEC-Umgebungsvariablen kann jeder User für sich eine andere Reihenfolge bestimmen.

Ebenso sind die Verzeichnisse, in denen nach den man-Seiten gesucht werden soll, in manpath.config festgeschrieben. Da die Datei manpath.config nur von root bearbeitet werden darf, besteht auch hierbei die Möglichkeit, dass der Benutzer mit der Umgebungsvariablen MANPATH ein anderes Verzeichnis angeben kann.

Das Kommando man hat eine Reihe von Optionen, hier die wichtigsten:

  • -a
    • Häufig gibt es gleichnamige man-Seiten in verschiedenen Kategorien. Geben Sie bspw. man sleep ein, wird die erste gefundene Sektion (abhängig von der Reihenfolge, die in manpath.config oder MANSEC angegeben wurde) mit entsprechendem Namen ausgegeben.
    • Wollen Sie alle man-Seiten zu einem bestimmten Namen bzw. Kommando lesen, so müssen Sie nur die Option -a verwenden. Mit man -a sleep erhalten Sie jetzt alle man-Seiten mit sleep.
  • -k Schlüsselwort:
    • Entspricht apropos Schlüsselwort; damit werden alle man-Seiten ausgegeben, die das Wort »Schlüsselwort« enthalten.
  • -f Schlüsselwort
    • Entspricht whatis Schlüsselwort; damit wird eine einzeilige Bedeutung von »Schlüsselwort« ausgegeben.

whatis – Kurzbeschreibung zu einem Kommando

Die Syntax:

user$ whatis Schlüsselwort

Mit dem Kommando whatis wird die Bedeutung von »Schlüsselwort« als ein einzeiliger Text ausgegeben. whatis entspricht einem Aufruf von man -f Schlüsselwort.


Galileo Computing

24.2.15 Alles rund um PostScript-Kommandos  downtop

Die Befehle rund um das Postscript-Format werden aus Platzgründen nur mit Kommando und Bedeutung beschrieben. Näheres entnehmen Sie den entsprechenden man-Seiten.


Kommando Bedeutung
a2ps Textdatei umwandeln nach Postscript
dvips DVI-Dateien umwandeln nach Postscript
enscript Textdatei umwandeln nach Postscript
gs PostScript- und PDF-Dateien konvertieren
html2ps Umwandeln von HTML-Dateien nach PostScript
pdf2ps Umwandeln von PDF nach PostScript
ps2ascii Umwandeln von PostScript nach ASCII
ps2pdf Umwandeln von PostScript nach PDF
psutils Paket zur Bearbeitung von PostScript-Dateien


Galileo Computing

24.2.16 Sonstige Kommandos  toptop

alias/unalias – Kurznamen für Kommandos

Mit alias können Sie für einfache Kommandos benutzerdefinierte Namen anlegen. Löschen können Sie dieses Synonym wieder mit unalias.

bc – Taschenrechner

bc ist ein arithmetischer, sehr umfangreicher Taschenrechner für die Konsole mit vielen ausgereiften Funktionen.

printenv / env – Umgebungsvariablen anzeigen

Mit printenv können Sie Umgebungsvariablen für einen Prozess anzeigen lassen. Geben Sie kein Argument an, werden alle Variablen ausgegeben, anderenfalls der entsprechende Wert der Umgebungsvariablen. Soll zum Beispiel der Standardpfad kontrolliert werden, so ist Folgendes einzugeben:

user$ printenv PATH 
/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin: 
/bin:/usr/bin:/usr/bin/X11:/usr/games


Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






 <<   zurück
  
  Zum Katalog
Zum Katalog: Ubuntu GNU/Linux






Ubuntu GNU/Linux
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 3 Stunden
 Ubuntu-Training
In 28 kostenlosen Video-Lektionen macht Sie Rainer Hattenhauer mit Ubuntu GNU/Linux vertraut.
Zu den Videos

 Buchtipps
Zum Katalog: Ubuntu GNU/Linux - Das Video-Training für Einsteiger und Umsteiger






 Ubuntu GNU/Linux
 Das Video-Training


Zum Katalog: Linux






 Linux


Zum Katalog: Debian GNU/Linux Etch






 Debian GNU/Linux


Zum Katalog: OpenOffice.org 2.0 - Einstieg und Umstieg






 OpenOffice.org 2.0
 Einstieg und Umstieg


Zum Katalog: OpenOffice.org 2.0 - Video-Training






 OpenOffice.org 2.0
 Video-Training


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de