Einführung: Schnittstelle Kommandozeile Teil 11

von Peter Kelly (critter)

Eine Handvoll weiterer nützlicher Befehle

In dieser Artikelfolge haben wir bisher die meisten der wichtigsten Aspekte der Arbeit mit der Kommandozeile betrachtet. Diesmal möchte ich etwas Zeit darauf verwenden, einige der wertvolleren Arbeitsinstrumente zu betrachten, die Linux Distributionen anbieten.

Dies darf nicht als erschöpfende Liste angesehen werden. Es gibt dafür bei weitem zu viele Befehle. Aber es ist ein Blick auf jene Hilfsmittel, die Sie in fast jeder Linux Distribution finden werden, entweder schon standardmäßig installiert, oder in den Repositories.

Es gibt Befehle, die Sie sicher nicht täglich brauchen, die aber unschätzbar wertvoll sind, wenn man sie braucht und solche, die ich noch nicht behandelt habe und die ein wenig mehr der Erläuterung bedürfen. Ich werde aber nicht jede mögliche Eigenschaft der Befehle behandeln. Dafür gibt es die jeweiligen Anwendungsbeschreibungen. Ich hoffe aber sie so detailliert zu behandeln, dass man gut verstehen kann, was der Befehl zu leisten in der Lage ist.

apropos {string}

Sind Sie mal auf der Kommandozeile festgehangen, genau wissend, was Sie machen wollten, aber der Befehl dazu fiel Ihnen beim besten Willen nicht ein? Klar, das ist uns allen schon einmal passiert und an der Stelle rettet der Befehl (apropos) den Tag. Er durchsucht eine Datenbank der Beschreibungen der manual pages folgendermaßen nach Dingen, die mit dem string übereinstimmen:

pic

at {options}{time}{date}

Dies ermöglicht es Ihnen, Befehle zu einem bestimmten Zeitpunkt ausführen zu lassen. Der cron Befehl wird für laufende Anwendungen für Wiederholungen zu einem bestimmten Zeitpunkt oder einer bestimmten Frequenz genutzt, dagegen hilft der at Befehl bei abgeschalteten Anwendungen. Voraussetzung zur Benutzung des Befehls ist, dass der atd-Dienst läuft. Ob das der Fall ist, findet man als Benutzer root, mit dem Befehl /sbin/service atd status heraus.

Wenn nötig kann der Dienst mit /sbin/service atd start gestartet werden.

Sie starten den Befehl durch Eingabe von at, gefolgt von einer Zeit und, optional einem Datum. Wenn über die -f Option ein Dateiname angegeben ist, dann wird die Liste der auszuführenden Befehle aus dieser Datei eingelesen. Andernfalls werden Sie aufgefordert, diese über das Terminal einzugeben. Die Eingabe wird mit Ctrl-d abgeschlossen.

Die Art und Weise, wie die Zeit zu spezifizieren ist, ist ziemlich ungewöhnlich. Sie kann im 24 Stunden Format beispielsweise mit 15:30, oder im 12 Stunden Format mit 3:30pm eingegeben werden. Gültige Zeitspezifikationen sind auch midnight, noon, teatime (4:00pm) now + 2 hours und man kann auch today oder tomorrow anfügen. Date akzeptiert die Formate March 15 oder Mar 15. Das Jahr wird mit 4 Ziffern eingegeben z. B. 2010. Man kann einfach einen Tag angeben, Sat oder Saturday. Eine Schrittweite kann jedem Teil des Zeit-Datumsstrings hinzugefügt werden.

Während der Ausführung der Befehle wird jede Ausgabe oder Fehlermeldung an den Benutzer gemailt. Dafür muss der sendmail Dienst installiert und konfiguriert sein. Die meisten Nutzer werden es allerdings vorziehen, die Ausgaben in eine Datei umleiten.

Jeder Befehlssatz erhält eine eindeutige Auftragsnummer. Noch wartende Jobs können mit dem atq Befehl gelistet werden. Mit dem Befehl atrm job-number können Jobs aus der Warteschlange entfernt werden.

basename {name}{suffix}

Diesen Befehl benutzt man, um alle vorstehenden Verzeichnisnamen und optional das Suffix eines vollständig qualifizierten Dateinamens zu löschen. Es würde also basename /home/jane/scripts/myscript1.sh myscript1.sh zurückgeben und basename /home/jane/scripts/myscript1.sh .sh myscript1. In Scripten ist der Befehl von unschätzbarem Wert.

bc

bc ist ein Rechner für die Kommandozeile. Im Prinzip stimmt das so, aber es ist auch eine riesige Untertreibung. Es handelt sich dabei um eine vollständige, kompatible Sprache, ähnlich wie C, das unbegrenzte arithmetische Präzision bereitstellt. bc verfügt über eine ausführliche Bibliothek mathematischer Funktionen, die mit der -l Option eingebunden werden können. Es können auch eigene Funktionen definiert werden. Am meisten wird bc allerdings interaktiv von der Kommandozeile aus oder aus einem Script heraus für eine schnelle Berechnung oder Umrechnung benutzt.

Um bc von der Kommandozeile aus zu nutzen, geben Sie einfach bc ein. Sie werden mit einem Banner begrüßt, das die Version und Lizenzinformationen bereitstellt (kann mit der -q Option unterdrückt werden) und einem Prompt.

pic

Jetzt können Sie ganz einfach Ausdrücke wie 2+3 oder 3.1416*6 eingeben und das Ergebnis wird über echo am Bildschirm angezeigt (stdout). Zur Beendigung der Sitzung geben Sie quit oder ctrl-d ein.

Wenn Sie die -l Option, die mit langen Fließkommazahlen arbeitet nicht benutzen, wird Ganzzahlarithmetik verwendet. In der bc Sprache ist die Präzisionsskala auf null gesetzt, was bedeutet, dass null Dezimalstellen angezeigt werden. Dies kann durch Setzen der Variablen scale geändert werden. Bei Verwendung der -l Option wird deren Wert standardmäßig auf 20 gesetzt, d. h. es werden 20 Dezimalstellen angezeigt. Wenn Sie in einem Ausdruck mit mehr Dezimalstellen als dem aktuellen Wert von scale arbeiten, dann wird das Ergebnis mit dieser Anzahl der Dezimalstellen ausgegeben.

Wenn Sie bc häufiger verwenden wollen und nicht jedes mal die ganzen Versionssachen kennen wollen und weil die bash gut mit Ganzzahlen klar kommt, dann werden Sie vielleicht ein alias in Ihre bashrc Datei einfügen:

alias bc="bc -lq"

Der bc Befehl wird oft in Pipelines und für Umleitungen benutzt. Das zeigen nachfolgende Beispiele:

echo 3.1416*2.5 | bc -l
bc <<< 2^32

Die Ausdrücke können aber auch aus einer Textdatei eingelesen werden:

cat > sums
2+3
s(1.34) #sine 1.34 radians
scale=5
7/3
quit

Kommentare sind erlaubt, ihnen wird ein hash (#) vorangestellt. Ohne das quit würde bc auf weitere Eingaben von stdin warten.

pic

Der bc Befehl kann mit allen Zahlensystemen mit einer Basis von 2 bis 16 arbeiten. Standard ist die Basis 10. Um das zu ändern verwenden Sie die Variablen ibase und obase für Eingabebasis und Ausgabebasis des Zahlensystems. Das ist äußerst hilfreich, wenn Sie von binär-, hexadezimal-, octal- und dezimal- Systemen Umwandlungen vornehmen müssen. Nachstehendes bash Script wandelt von dezimal nach hexadezimal um:

#!/bin/bash
#d2h.sh convert decimal to hexadecimal

if [ $# != 1 ]; then
    echo "Usage: d2h decimal-value"
    exit 1
fi
echo “ibase=10; obase=16; $1" | bc
pic

Sollten Sie dieses Script editieren wollen, um die Operation umzukehren, hex nach dezimal, müssen Sie berücksichtigen, dass obase dasselbe Format hat wie ibase:

ibase=16; obase=A

Die Buchstaben des Hexadezimalsystems müssen durch Großbuchstaben gekennzeichnet sein, da bc Kleinbuchstaben für Variable reserviert. Mit der awk toupper Funktion können Sie den Wert über eine Pipe weitergeben, oder Sie benutzen den tr Befehl zur Richtigkeitsprüfung, bevor Sie ihn an bc übergeben.

cksum {files}

Dieser Befehl könnte nützlich sein, wenn Sie Dateien übertragen oder komprimieren wollen. Er berechnet einen cyclischen Redundanzwert (CRC) für alle auf der Kommandozeile spezifizierten Dateien. Später kann man diesen Wert zur Integritätsprüfung der Datei verwenden.

pic

clear

Löscht den Bildschirm des Terminals, sonst nichts. Einfach, aber wichtig.

comm {option}{file_a}{file_b}

Verwenden Sie diesen Befehl, wenn Sie wissen wollen, wie ähnlich sich 2 Dateien sind. Die Ausgabe erfolgt in drei Spalten Zeilen, die nur in file_a stehen, Zeilen, die nur in file_b stehen und Zeilen, die in beiden Dateien stehen. Es gibt eine Option zur Unterdrückung von Spalten. Dazu müssen ihre Nummern ohne Leerzeichen angegeben werden. -12 würde die Spalten 1 und 2 unterdrücken und nur die Zeilen ausgeben, die beiden Dateien gemeinsam sind.

pic

cut {options}{files}

Dieses benutzen Sie, um aus spezifizierten Dateien oder über stdin Datenfelder auszuschneiden. Mit den Optionen können Sie weiter spezifizieren, was ausgeschnitten werden soll, -b eine Liste von Bytes, -c Spalten, -f Felder. Wenn -f angegeben ist, ist das Standardtrennzeichen das tab Zeichen. Dies kann mit der -d Option geändert werden. -s mit -f unterdrücken Zeilen ohne Trennzeichen.

Für den Fall, dass die Datei Multibytezeichen enthält, können Sie mit der -n Option verhindern, dass diese aufgetrennt werden. Die Liste der Felder kann durch durch Kommata getrennte Werte angegeben werden, oder durch Bereiche 2-5.

pic

Hier haben wir eine Liste der auf dem System verfügbaren USB Geräte abgefragt. Das Trennzeichen ist ein Leerzeichen und die Felder 5 und 6 interessieren uns nicht. Weil das Trennzeichen ein Leerzeichen ist und auch der Name Leerzeichen enthält, wurde der Ausgabebereich (7-20) breit genug definiert, um alle Worte aufzunehmen.

df {options}{device_name}

Das ist ein handliches kleines Hilfsmittel zur Anzeige von freiem Platz auf Speicherplatten. Wenn kein Name angegeben wird, werden alle eingebundenen Dateisysteme angezeigt. _name kann ein Gerätename sein wie /dev/sdb1 oder ein Einhängepunkt wie /home. Wird ein Verzeichnisname verwendet, dann wird über das gesamte Dateisystem berichtet, in das dieses Verzeichnis eingebunden ist.

Bei den Optionen findet man unter anderem:

-a
zeigt alle Dateisysteme unter Einschluss von Phantomdateisystemen wie /proc
-i
bezieht sich eher auf inode Nutzung als auf byte Nutzung
-h
berichtet in für Menschen lesbarer Form wie z. B. 15G.
-t
nur die genannten Dateisystemtypen einbeziehen. Z. B. -t ext4.
-T
den Typ des Dateisystems miteinbeziehen
-x
gelistete Dateisysteme ausschließen.

Wenn Sie Nutzer von PCLinuxOS sind, werden Sie ein alias für den Befehl finden können:

alias df='df -h -x supermount

Das macht den Bericht lesbar und schließt supermount Dateisysteme aus. Supermount ist ein Phantomdateisystem, das dazu dient mit Wechselmedien wie CD's oder Floppylaufwerken umzugehen.

Es ist wichtig die Laufwerksauslastung zu überwachen. Ein volles Laufwerk kann zu merkwürdigen Problemen führen, insbesondere, wenn eine Anwendung oder ein Script keine Vorsichtsmaßnahmen aufweist um so etwas abzufangen.

dirname {name}

Das Gegenteil von basename. Hier wird der Dateiname in seiner Gesamtheit abgeschnitten, indem nach dem letzten / gesucht wird. dirname /home/jane/scipts/myscript1.sh wird also /home/jane/ scripts zurückgeben.

du

Zeigt die Plattenbelegung an, oder den Platz, den ein Verzeichnis beansprucht. Standard ist das Arbeitsverzeichnis.

Es handelt sich hier um ein Kernstück der Hilfsmittel und Sie werden es auf jedem Linux System finden, da es als substantiell angesehen wird, obwohl die meisten Leute nur wenige seiner etwa 20 Kommandozeilenoptionen nutzen werden. Wenn Sie PCLinuxOS verwenden, dann ist bei Ihnen ein alias zu du eingerichtet, das die -h Option automatisch einstellt um die Ausgabe für Menschen lesbar zu machen. Weitere Optionen, die häufig verwendet werden sind:

-c
Eine Gesamtsumme am Ende der Ausgabe anfügen
-s
Nur Gesamtsumme ausgeben
-x
Die Zählung auf Dateien eines einzigen Dateisystems beschränken
--max-depth=n

Die Ausgabe auf Verzeichnisse mit der Tiefe n beschränken. Beachten Sie, dass das eine 'Langoption' ist und daher zwei anstatt 1 Hyphen vorangestellt werden müssen.

file {file name}

Verwenden Sie diesen Befehl, wenn Sie wissen wollen, welche Art von Daten sich in einer bestimmten Datei befinden.

pic

fmt

Wenn Sie eine reine Textdatei haben, die Sie an eine beschränkte Bildschirm- oder Papiergröße anpassen wollen, dann macht dieser Befehl einen guten Job. Er bemüht sich so viel wie möglich der ursprünglichen Formatierung beizubehalten. Leerstellen und Einzüge bleiben unverändert, wann immer das möglich ist und Zeilenumbrüche werden an Satzenden ausgeführt. Die nützlichste Option hier ist -w zur Festlegung der Breite. fmt -w 36 a-text-file gibt die Datei in eine einzigen 36 Zeichen breiten Spalte aus.

free

Wenn Ihr System Ihnen besonders langsam und schwerfällig vorkommt, dann sollten Sie diesen Befehl verwenden, um die Nutzung Ihres Speichers zu überprüfen. Die Optionen -b -k -m & -g bewirken die Ausgabe jeweils in Bytes, Kilobytes, Megabytes oder Gigabytes. Standard sind Kilobytes.

pic

Normalerweise haben Sie zwei Arten Speicher: physikalischen und virtuellen oder swap Speicher. Wenn eine Anwendung gestartet wird, weist der Kernel ihr Arbeitsspeicher zu. Wenn der Benutzer seine Anforderungen erhöht, kann die Anwendung eventuell mehr Speicher anfordern. Daten werden in einem cache zwischengespeichert, um sie für die Anwendung schneller verfügbar zu machen und temporäre Daten und Ergebnisse werden in Puffern (buffer) abgelegt. Wenn beispielsweise eine Anwendung zum Brennen von CD's Daten schreibt, dann werden diese Daten viel schneller von der Festplatte gelesen als sie auf die CD geschrieben werden können. Dies Daten werden daher in einem Puffer zwischengespeichert, von wo sie dann gelesen werden, wenn sie benötigt werden.

Wenn der Kernel seine Vergabe von physikalischem Speicher ausgeschöpft hat, dann beginnt er die Inhalte von einigen der zugewiesenen Speicherbereiche in virtuellen Speicher auszulagern (swap), um die Situation zu entspannen. Zugriffe auf Swap Speicher sind viel langsamer als jene auf physikalischen Speicher und im Ergebnis wird die Maschine langsamer.

Wenn Sie einen starken Gebrauch von Swap Speicher feststellen, dann müssen Sie etwas unternehmen.

Es wird helfen, wenn Sie einige Anwendungen schließen, ansonsten bekommen Sie ein rüpelhaftes Konkurrieren der Prozesse um Ressourcen, - erinnern Sie sich an die Zombies und die Waisenkinder als wir Prozesse behandelt hatten. Wenn Sie verfolgen wollen, welche Prozesse am meisten Speicher benutzen, dann sollten Sie ein Werkzeug wie top einsetzen. Wenn eine solche Situation öfters auftritt, kann es nötig sein Ihre Maschine mit mehr Speicher auszustatten.

In der obigen Bildschirmausgabe zeigt die oberste Zeile den physikalischen Speicher an, die unterste Zeile den Swap Speicher und die mittlere Zeile den freien Speicher oder den Speicher in Gebrauch und zwar unter Ausschluss dessen, was an Puffer- und Cache Speicher zugesagt ist.

fuser {file oder file-system}

Ist es Ihnen schon mal passiert, dass Sie die Einbindung eines USB Gerätes oder einer externen Platte lösen wollten, und lediglich die Meldung erhielten, dass das Gerät mit einem Prozess oder irgend etwas anderem beschäftigt ist. Und das, obwohl Sie der Meinung sind, alle Dateien auf dem Gerät geschlossen zu haben. Das System ist offensichtlich anderer Meinung und verweigert Ihnen das sichere Entfernen.

Bei solchen Gelegenheiten ist das der Befehl, den Sie brauchen. Er listet die Prozess ID's (PID) aller aktiven Dateien am angegebenen Pfad auf. Pfad kann hier ein Pfadname, ein eingebundenes Verzeichnis, ein Blockgerät wie / dev/sdb1 oder sogar ein entferntes System wie ein ftp Server sein.

Für unser Beispiel eines USB Laufwerks müssen wir die -m Option angeben, die dem Befehl mitteilt, dass das, was folgt ein Einhängepunkt oder ein Blockgerät ist. Da die PID nicht viel Information hergibt, spezifizieren wir die -v Option um eine ausführliche Ausgabe zu erhalten, die uns mitteilt, welche Datei(en) das gegenwärtig ist (sind). Da wir das Gerät entfernen wollen müssen wir den Prozess beenden (kill), wir fügen daher die -k Option hinzu. Das ist allerdings potenziell gefährlich, da wir vergessen haben, was das für eine Datei ist. Wie können wir sicher sein, dass wir damit fertig sind und alle Änderungen gespeichert haben? Um sicher zu sein, anstatt dass es einem leid tut können wir noch die -i Option anfügen die bewirkt, dass interaktiv eine Bestätigung abgefragt wird, bevor ein Prozess beendet wird.

fuser -mvki /media/usb/

Dies listet alle geöffneten Prozesse auf dem Gerät auf und fragt nach, ob sie beendet werden sollen, oder nicht. Nachdem wir alle laufende Prozesse beendet haben, können wir unseren umount Befehl wiederaufnehmen.

gzip & gunzip

Es gibt eine Menge Werkzeuge zur Dateikomprimierung und davon ist gzip eines der besten. Dieses Instrument ist so fest in so viele Unix/Linux Praktiken und Prozesse integriert, dass die Kenntnis über seinen Gebrauch ein 'muss' ist, wenn Zeit mit Arbeit auf der Kommandozeile verbringen. Aber warum auch nicht, es ist einfach zu gebrauchen. Komprimierte Dateien sparen Speicherplatz, das ist zwar heute keine so große Sache mehr, und sie werden schneller über langsame Übertragungswege und Netzwerke übertragen.

Am einfachsten nutzt man es mit gzip Dateiname. Ungewöhnlicherweise ändert dies die Originaldatei und erzeugt keine neue Datei. Die Datei wird komprimiert und .gz wird an den Dateinamen angehängt. Neben anderen Optionen, die dem Befehl übergeben werden können gibt es:

-d
decompress – genau dasselbe wie gunzip.
-s suffix
ändert das Standardsuffix gz in etwas anderes, was Sie möchten
-n
wobei mit n nicht der Buchstabe, sondern eine Zahl zwischen 1 und 9 gemeint ist. Damit wird der anzuwendende Kompressionsgrad angegeben. 9 bedeutet maximale Kompression. Anstelle von 1 oder 9 können Sie auch -fast oder -best angeben. Standard ist 6, was für die meisten Anwendungen recht gut ist.
-r
Wenn Sie dem Befehl einen Verzeichnisnamen übergeben, dann wird der Befehl rekursiv alle Dateien abarbeiten, die es enthält.

Auf der Kommandozeile können mehrere Dateien als Argument übergeben werden.

head

head benutzt man um die ersten wenigen Zeilen einer Datei anzuzeigen. Standardmäßig werden 10 Zeilen angezeigt, aber das kann geändert werden, indem man die gewünschte Anzahl als Option übergibt, z. B. head -15 logfile. Siehe auch tail.

kill

Verwenden Sie diesen Befehl, wenn Sie finden, dass ein Befehl sich schlecht benimmt und Sie ihn beenden wollen. Natürlich müssen Sie Besitzer des Prozesses sein oder Superuser-Privilegien besitzen, um dies tun zu können.

Den Befehl benutzen Sie indem Sie ihm ein Signal als Option übergeben und die PID des Prozesses (der Prozesse) der (die) bearbeitet werden soll(en) bereitstellen. Wenn kein Signal angegeben ist, wird standardmäßig das Signal TERM verwendet. Die Spezifizierung des Signals erfolgt als Name oder als Zahl. Das Signal TERM hat die Nummer 15 und den Namen SIGTERM. Einige Prozesse können das Signal, das an sie gesendet wird als eine Überlebensstrategie abfangen uns so dickköpfig ihr Absterben verweigern. In solchen Fällen verwenden Sie das Signal Nummer 9, SIGKILL, welches nicht abgefangen werden kann, aber dieses ist recht drastisch und es sollte ein geschmeidigerer Beendigungsprozess vorgezogen werden.

Kill -9 1729 beendet den Prozess mit der Nummer 1729 auf der Stelle. Verwenden Sie die -l Option, um eine Liste aller Signalnummern und ihrer Namen zu erhalten.

less

In Unix wurde der Befehl more eingeführt um Textdateien am Terminalbildschirm anzeigen zu können (Drücken der Leertaste zeigte weiteren Text an). Das war recht beschränkt und in der Anwendung recht plump und die meisten Befehle basierten auf dem vi Editor.

Bald darauf erschien eine fähigere Alternative auf der Szene, die komischerweise mit less bezeichnet wurde.

Das ist einer jener Befehle, der für mich bei Weitem zu viele Optionen besitzt, ich habe die Dinge gerne so einfach wie möglich. Wenn Sie etwas mit einer Textdatei anfangen wollen, ist less wahrscheinlich in der Lage es auszuführen. In der Regel möchte ich den Text anschauen und hoch- und runterscrollen. Dafür ist es ausgezeichnet geeignet.

Geben Sie less Textdatei ein und der Beginn der Datei wird am Bildschirm ausgegeben. Drücken Sie f oder die Leertaste, um mehr anzuzeigen, b für zurück, oder verwenden Sie die Pfeiltasten für's Navigieren. Mit q beenden Sie. Was könnte einfacher sein?

Um etwas in der Datei zu suchen geben Sie einen Schrägstrich (/) gefolgt vom Wort oder dem Muster, das Sie finden wollen, ein und drücken Sie return. Verwenden Sie das ? anstelle des Schrägstrichs für eine Rückwärtssuche.

Für mich reicht das. Wenn ich mehr machen will, benutze ich einen Editor.

namei

Verfolgen Sie einen Pfadnamen bis zum Ende.

Dieser recht unübliche Befehl ist oft recht hilfreich. Auf meinem System ist die Hypersuperversion von vivim installiert. Wenn ich auf der Kommandozeile /bin/vi eingebe, erhalte ich einen Editor der offensichtlich vim ist. Wende ich den which Befehl an, um zu erfahren, was gestartet wird, wenn ich vi eingebe, erhalte ich dieses:

which vi
/usr/bin/vi

Also, was geht da vor?

namei verfolgt den Pfadnamen durch alle Links und gibt einen Buchstaben für den Typ jeder gefundenen Datei aus. Diese Buchstaben sind:

-
reguläre Datei
b
Blockgerät
c
Eingabegerät
d
Verzeichnis
f:
aktuell gültiger Pfadname
l
Link
s
Sockel
?
Ein Fehler

Die Eingabe von namei /bin/vi erzeugt folgende Ausgabe:

pic

Dies zeigt die Links an, die vom Befehl /bin/vi durchlaufen werden und auch, dass ich tatsächlich /usr/bin/vim-enhanced ausgeführt wird.

ps

Anzeige von Informationen über die Prozesse, die auf dem System laufen. Damit können Sie herausfinden welche Prozesse Systemressourcen nutzen, wer der Besitzer ist und welche PID sie haben.

Mit diesen Informationen bewaffnet können Sie jeden Prozess bearbeiten, der aus dem Ruder läuft, oder nur Speicherplatz frisst. Die Ausgabe kann ziemlich lang sein und Sie werden feststellen, dass dieser Befehl häufig mit grep zur Informationsfilterung verwendet und dann über eine Pipe an less übergeben wird, um Zeit zu gewinnen, ihn zu lesen.

Der Befehl kommt mit genügend Optionen daher, um die Bedürfnisse des engagiertesten Systemadministrators zu befriedigen, aber wir Sterblichen erhalten die meisten Resultate mit gerade mal 4 Optionen.

a
alle Prozesse auflisten
u
Benutzernamen und Besitzer des Prozesses miteinbeziehen
x
Prozesse miteinbeziehen, die nicht mit einem Terminal in Verbindung stehen
f
eine baumähnliche Struktur ausgeben, die die Eltern-Kind Beziehungen zwischen den Prozessen verdeutlicht.

Ein voranstehendes Hyphen wird für diese Optionen nicht gebraucht und sollte nicht verwendet werden, da es die Bedeutung einiger Optionen verändern könnte. Die Ausgabe besteht aus einer Reihe von Feldern, die in Spalten angezeigt werden. Welche Ausgabe Sie erhalten hängt von den Optionen ab, die Sie benutzen.

Die erste Ausgabezeile enthält die Spaltenköpfe die erklären, was darunter folgt. Davon sind für uns von Interesse:

USER
Benutzername der Besitzer des Prozesses
PID
Identifikationsnummer des Prozesses
%CPU
belegte Prozessorzeit
%MEM
prozentualer Anteil von vom Prozess belegtem physikalischem Speicher
VSZ
Größe des virtuellen Speichers in KB
TTY
wenn existent, das Terminal auf dem es läuft
STAT
Status des Prozesses. Dieser kann einer der Folgenden sein:
D
in tiefem, nicht unterbrechbarem Schlaf
S
im Schlaf oder wartend
R
laufend oder in Warteschlange zum Laufen
T
angehalten
X
gestorben, - dies sollten Sie niemals sehen, weil es von der Prozesswarteschlange hätte entfernt werden sollen
Z
Zombie – dies sollten Sie entfernen.

Gemeinsam mit diesen Codes können Sie zusätzlich eines oder mehreres von Nachstehendem finden:

N
hübsch, geringe Priorität
<
hohe Priorität
l
mehrfach aufgereiht
L
verschlossene Seiten im Speicher
s
Führung der Sitzung
+
Vordergrundprozess
COMMAND
Name des Prozesses.

reset

Manchmal wird Ihr Terminal vielleicht defekt sein. Das kommst heute nur noch selten vor, aber es kann doch passieren und Sie erhalten nur Müll auf dem Schirm. Geben Sie einfach reset ein, auch wenn Sie Ihre Eingabe nicht sehen können. Die Dinge sollten dann wieder normal werden.

rm

Dies ist einer der grundlegendsten Befehle zum Umgang mit Dateien und vom Potential her einer der destruktivsten. Er entfernt Dateien oder besser gesagt, er entfernt den Verzeichniseintrag der Datei. Die Daten bleiben auf der Platte erhalten, bis sie überschrieben werden. Um die Datei zu entfernen brauchen Sie kein Schreibrecht, Sie brauchen nur Schreibrechte für das Verzeichnis, das die Datei enthält. Die Anwendung mit der -r Option löscht Dateien von Verzeichnissen rekursiv. Das ist ganz offensichtlich gefährlich und aus diesem Grund enthalten die meisten Systeme folgendes Alias: alias rm='rm -i'. Das bewirkt, dass der Befehl interaktiv ein 'y' oder 'n' abfragt, bevor die Datei gelöscht wird.

script textfile

Nachdem Sie diesen Befehl eingegeben haben wird alles was Sie am Terminal ausführen in die Datei 'textfile' oder wie auch immer Sie sie nennen kopiert. Dies kann hilfreich sein, wenn Sie jemandem zeigen wollen, wie etwas am Terminal ausgeführt werden soll. Ein zusätzlicher Vorteil ist, dass Sie alle Ihre fehlgeschlagenen Versuche auseditieren können, wenn Sie es einmal richtig eingestellt haben.

stat

Ausgabe von Information über eine Datei, die aus dem Inode bezogen wurde, der die Metadaten der Datei enthält.

pic

Wenn Sie jemals die Fehlermeldung erhalten "can't stat file ************", bedeutet das in der Regel dass die Datei nicht vorhanden ist (im Verzeichnis, das Sie dem Befehl zur Suche angegeben haben).

tac

Während cat Dateien von der ersten Zeile zur letzten ausgibt, kehrt tac die Ausgabeordnung von der letzten Zeile auf die erste Zeile um. Dieses Verhalten kann geändert werden, indem das Trennzeichen mit der -s Option geändert wird. Standard ist einen neue Zeile.

tail

tail ist hilfreich um die letzten Zeilen einer Datei auszugeben. Standardmäßig werden 10 Zeilen angezeigt, aber das kann geändert werden, indem man die gewünschte Zeilenzahl als Option übergibt, z. B. tail -15 logfile. Siehe auch head.

tee

Verwenden Sie dies, wenn Sie wünschen, dass die Ausgabe eines Befehls an mehr als einen Ort geschickt werden. Vielleicht wollen Sie die Ausgabe eines Befehls sehen und sie gleichzeitig in einer Datei speichern:

cat /etc/fstab | tee ~/myfstab

Dies gibt die Datei am Bildschirm aus und schreibt sie auch in eine Datei in meinem Heimatverzeichnis. Mehrfachdestinationen können angegeben werden. Mit der -a Option wird die Information an eine Datei angehängt.

uname

Damit können Sie Informationen über Ihre Maschine und Ihr Betriebssystem ausgeben. Dies kann bei der Fehlersuche helfen.

pic

Es gibt die Optionen:

-a
alle Informationen
-m
System Hardware
-n
Host Name im Netzwerk
-r
Kernelversion
-s
Betriebssystem
-p
Prozessortyp
-v
Information über das Kernel build

uniq

Dieser Befehl findet doppelte Zeilen in einer sortierten Datei. Die Zeilen müssen aufeinander folgen, also muss die Datei zuerst sortiert werden. Dies geschieht üblicherweise direkt mit Hilfe des sort Befehls. Nehmen Sie an, Sie hätten eine Datei, die eine Liste von Objekten enthält und Sie glauben einige davon seien doppelt. Jane hat eine ungeordnete Liste der amerikanischen Staaten. Um nur die Staaten anzuzeigen, die doppelt vorhanden sind, benutzen Sie die -d Option.

pic

Um herauszufinden, wie oft ein mehrfacher Eintrag vorhanden ist, nutzen Sie -c um das festzustellen. Das könnte nützlich für die Inventarisierung einer Lagerliste sein.

pic

Um eine solche Liste zu erhalten, wünscht sich Jane eine sortierte Liste ohne Mehrfacheinträge. Die Ausgabe des optionslosen Befehls wird an eine neue Datei geschickt.

pic

Aus der Größe der Datei kann man sehen, dass die Mehrfacheinträge entfernt wurden.

wc

Mit diesem Befehl zählen Sie die Anzahl von Buchstaben, Wörtern oder Zeilen einer Datei. Die entsprechenden Optionen sind -c, -w oder-l.

pic

Die Eingabe muss natürlich nicht unbedingt eine Datei sein. Man kann auch über eine Pipe die Ausgabe eines anderen Befehls übergeben.

whatis

Haben Sie sich mal gefragt, was macht eigentlich dieser jeweilige Befehl? Whatis kann dadurch helfen, dass es eine einzeilige Beschreibung der man Seiten (pages) ausgibt. Wenn nichts gefunden wird antwortet der Befehl höflich mit ''Nothing appropriate''.

whereis

Dieser Befehl sucht und gibt den vollständigen Pfad zu einer ausführbaren Datei aus, zusätzlich die man pages und den Ursprung eines jeden Befehls.

Die Optionen -b, -m und -s beschränken die Suche auf binäre (ausführbare) Manuel oder Quelldateien.

who

Obwohl ursprünglich für ein Mehrfachnutzersystem vorgesehen, um herauszufinden, wer eingeloggt ist, hat dieser Befehl einige Optionen, die auch bei einem 'stand-alone' System hilfreich sind.

who -b
gibt den Zeitpunkt aus an dem das System zum letzten Mal hochgefahren wurde.
who -d
ergibt eine Liste toter Prozesse
who -r
gibt den aktuellen Runlevel aus

Fügt man noch -H hinzu, so wird noch eine Zeile mit Kopfzeilen für die jeweilige Spalte im Ausdruck erzeugt.

Sie können auch who am i eingeben, obwohl das nicht sehr sinnvoll zu sein scheint und es gibt auch einen eigenständigen Befehl whoami. Je nach Situation werden unterschiedliche Ergebnisse ausgegeben. Betrachten Sie das Folgende:

pic

In diesem Fall geben beide Befehle Ihren Benutzernamen zurück, der Ihnen zugewiesen ist, wenn Sie das System als normaler Benutzer betreiben. Wenn Sie aber mit dem su Befehl zwischen Benutzern hin- und herschalten, dann sagt Ihnen der who am i Befehl als wer Sie wirklich eingeloggt sind und der Befehl whoami sagt Ihnen, als wer Sie angesehen werden, wenn Sie Befehle eingeben.

In Scripten ist das sehr hilfreich, um die Benutzerintegrität zu überprüfen, bevor ein zerstörerischer Befehl ausgeführt wird.

xargs

Hierüber sollten Sie wirklich gut Bescheid wissen. Es steht Ihnen frei dem Befehl so viele Argumente zu übergeben, wie Sie wollen. Das kann auf der Kommandozeile mühsam sein, ist aber ein Segen in Scripts und da findet man ihn auch häufig.

Mit dem xargs Befehl können Sie die Ausgabe eines Befehls als eine Serie von Argumenten an einen anderen Befehl umleiten.

find . -iname "c*.sh" | xargs lpr

Dies schickt den Inhalt aller Dateien des aktuellen Verzeichnisses die mit c anfangen und mit .sh enden (Shellscripts?) an Ihren Drucker, auch wenn es davon Tausende gibt, die wohl kaum auf der Kommandozeile aufgelistet werden können.

Selten werden Sie bei einem Shellscript wissen, wie viele Ergebnisse Sie aus einem Befehl erhalten. Dieser Befehl jedoch gibt Sie alle an Ihre Sequenz der Zielbefehle weiter. Auch können Sie aus dem Übergabestrom die Ergebnisse herausfiltern, an denen Sie interessiert sind.

Und der Rest?

Nun ja, es stehen Ihnen noch viel viel mehr Befehle zur Verfügung wenn Sie das Interface Kommandozeile bei einem Linux oder Unix System benutzen. Die wenigen, die ich oben beschrieben habe, sind die, von denen ich meine, dass sie am hilfreichsten sind. Alle besitzen sehr viel mehr Funktionalität als ich hier beschreiben konnte.

Unter Linux sind fast alle dieser Befehle ganz einfach zugänglich, um was immer Sie wollen auszuführen. Auch können Sie Ihren eigenen, auf Sie persönlich zugeschnittenen Befehlssatz erzeugen, der es Ihnen erlaubt, die Funktionen auszuführen, die sonst nicht so einfach verfügbar sind.

Diese können Sie dann auch Anderen anbieten, die sie auch nützlich finden könnten. So hat sich Linux/Unix entwickelt und Teilen und Entwickeln ist die Basis der open source community, die uns ein vorzügliches, freies Betriebssystem zur Verfügung gestellt hat.