Informationsdienste
Einige Informationsdienste sind schon bekannt: who, ls, man, tty. Hier folgen einige
weitere Kommandos, die den Benutzer mit Informationen versorgen:date [mmddhhmm[yy]] [+format] Beim Aufruf ohne Parameter werden Datum und Uhrzeit ausgegeben. Der Superuser kann mit diesem Kommando die Werte auch neu eingeben: date mmddhhmmyy (Monat, Tag, Stunde, Minute, Jahr) z. B.: date 10091245 (9.10., 12 Uhr 45)
Über den Parameter +format ("+"-Zeichen beachten!) kann die Ausgabe
nach eigenen Wünschen gestaltet werden. Die Ausgabeformatierung erfolgt
gemäß den Konventionen der Programmiersprache C (printf). Als Parameter
werden verwendet:
%m: Monat (1 - 12) | %D: Datum im Format mm/dd/yy |
%d: Tag (1 - 31) | %H: Stunde |
%y: Jahr (00 - 99) | %M: Minute |
%n: neue Zeile | %S: Sekunde |
%w: Wochentag (0-6) | %T: Zeit im Format HH:MM:SS |
%a: Wochentag (Sun-Sat) | %h: Monat (Jan-Dec) |
Beispiel: Datum und Uhrzeit zweizeilig:
date '+Datum: %w, %d.%m.%y%nUhrzeit: %T'
Erstellungs- und Zugriffszeit/Datum von Dateien werden intern in Sekunden ab dem
Offiziellen Geburtstag von UNIX, dem 1.1.1970, 0 Uhr UTC, gespeichert. Vor einiger
Zeit habe ich mal das UNIX-Verfallsdatum ausgerechnet:
Auf 32-bit-Systemen wird time_t genau 2038-01-19 03:14:08 UTC ueberlaufen,
d. h. dieses Datum hat die gleiche Darstellung wie 1970-01-01 00:00:00 UTC
= (time_t) 0.
touch [-em] [mmddhhmm[yy]] Dateiliste
Setzt Datum und Uhrzeit der Datei. Parameter -m setzt die "modification time"
(Voreinstellung), -a die "access time". Wird keine Zeit angegeben, nimmt touch die
aktuelle Zeit (mmddhhmmyy = Monat, Tag, Stunde, Minute, Jahr).
df [-tfk] [Dateisystem] (Disk Free)
Liefert die Anzahl freie Blöcke
und freier i-nodes des angegebenen Datenträgers. Fehlt die Angabe
des Datenträgers, wird der aktuelle Datenträger verwendet.
Optionen:
-t | Gesamtkapazität wird mit angegeben |
-f | Die Angabe über i-nodes entfällt |
-k | Angabe in KByte statt in Blöcken |
df /dev/dsk/0s1 | | Daten über einen bestimmte Platte |
df -f /usr | | freie Blöcke des Dateisystems, das unter /usr eingehängt ist. |
du [-arsk] [Dateiname]
(Disk Usage) Liefert die Anzahl der belegten
Blöcke von Dateien und Verzeichnissen (fehlt der Dateiname, wird das
aktuelle Directory untersucht). Bei Verzeichnissen werden die Blöcke
der darin enthaltenen Dateien aufsummiert. Bei Link-Dateien wird nur der
i-node gezählt. Es werden auch die indirekten Blöcke gezählt.
Optionen:
-a | (Voreinstellung) Daten für jede Datei ausgeben |
-r | Dateien melden, für die kein Leserecht existiert |
-s | Nur die Summe der belegten Blöcke ausgeben |
-k | Angabe in KByte statt in Blöcken |
du -a dat1 | Größe der Datei dat1 ausgeben |
du -s /bin | Summe der belegten Blöcke im Verzeichnis /bin |
du -s /usr/* | ausprobieren |
file [-c] [-f Dateiname] [-m Dateiname] [Dateinamen]
(Determine File Type) Überprüfung der angegebenen Dateien auf ihren Inhalt
(C-Programm, ASCII-Datei, ausführbares Programm, etc.). Um den Inhalt der Datei
zu analysieren, verwendet das file-Kommando die Datei /etc/magic, in der
Angaben über die Dateieigenschaften stehen (welche Bytes zu analysieren
sind). Optionen:
-f Dateiname | Die zu durchsuchenden Dateinamen stehen nicht
in der Kommandozeile, sondern in der angegebenen Datei. |
-m Dateiname | Die Unterscheidungskriterieen stehen nicht in
/etc/magic, sondern in der angegebenen Datei. |
find Pfadname(n) Bedingung(en) Aktion(en)
(Find Files) Durchsuchen der Platte nach bestimmten Dateien. Dieses Kommando ist sehr
mächtig und besitzt zahlreichen Optionen, welche die Bedingungen für die
Dateiauswahl (= Treffer) festlegen. Die angegebenen Pfade werden rekursiv durchsucht,
d.h. auch Unterverzeichnisse und Unter-Unterverzeichnisse, usw. Aufrufschema:
find Pfadname(n) Bedingung(en) Aktion(en)
Bei den nachfolgenden Optionen (= Bedingungen) steht das N für eine
Zahlenangabe (ganze Zahl). Das Vorzeichen dieser Zahl bestimmt die
Bedingung:
- N: genau N
- +N: mehr als N
- -N: weniger als N
Bedingungen
(Es werden nur die wichtigsten Optionen aufgeführt.):
-name Dateiname
Suche nach bestimmten Dateien (bei Verwendung von Metazeichen
wie "*" oder "?" den Namen unbedingt in '..' einschließen).
-type T
Suche nach einem bestimmten Dateityp T:
f: normale Datei
d: Directory
b: Block Device
c: Character Device
p: Named Pipe
-perm onum
Suche nach Dateien mit den durch die Oktalzahl onum angegebenen Zugriffsrechten.
Steht ein "-"-Zeichen vor onum, werden nicht alle, sondern nur die spezifizierten
Rechte geprüft (z. B. Test SUID: -perm -4000).
-links N
Suche nach Dateien mit einer bestimmten Anzahl N von Links
-user Kennung
Suche nach Dateien eines bestimmten Users; es kann der
Login-Name oder die UID angegeben werden.
-group Kennung
Wie -user, jedoch für Gruppen
-size N
Suche nach Dateien mit N Blöcken
-mount
Suche nur auf dem aktuellen Datenträger (wichtig, falls weiter Platten über
NFS eingebunden sind).
-newer Dateiname
Suche nach Dateien, die jünger sind, als die angegebene.
Aktionen
(auch hier nur die wichtigsten):
-print
Ausgabe der gefundenen Dateinamen auf die Standardausgabe.
-exec Kommando
Ausführen eines Kommandos. Wird innerhalb des Kommandos die leere geschweifte Klammer
{} aufgeführt, so wird anstelle der geschweiften Klammern der jeweils
gefunden absolute Pfad der Datei eingesetzt. Das per -exec aufgerufene Kommando wird
immer mit einem geschützten Strichpunt (\; oder ";" oder ';') abgeschlossen.
-ok Kommando
Wie -exec, jedoch mit Sicherheitsabfrage.
Beispiele:
find / -name '*.c' -print
Beginne beim Wurzelverzeichnis, alle C-Quellen (.c) zu suchen
und gib die Namen (und Pfade) auf dem Bildschirm aus. Die Apostrophe verhindern
die Ersetzung der Angabe "*.c" durch die Shell.
find -user markus -print
Suche alle Dateien von User markus.
find .-name dat1 -print
Suchen nach allen Vorkommen der Datei dat1 ab dem aktuellen Verzeichnis.
find .-print -name dat1
Gibt alle Dateinamen ab dem aktuellen Verzeichnis aus. Vorsicht Falle:
da die Bedingungen von links nach rechts ausgewertet werden und -print immer wahr
ist, hat der Teil -name dat1 keine Wirkung.
find . -name '*.bak' -exec rm {} \;
Suche alle .bak-Dateien ab dem aktuellen Verzeichnis und lösche sie.
find /usr -size +2000 -print
Gib alle Dateien der Benutzer mit mehr als 2000 Blöcken aus
(z. B. um die Platzverschwender zu mahnen).
find . -name '*.bak' -ok rm {} \;
Suche alle .bak-Dateien ab dem aktuellen Verzeichnis und lösche
sie nur, wenn die Nachfrage mit "y" beantwortet wurde.
find / -user markus -exec rm {} \;
Lösche alle Dateien von User markus, wo auch immer sie stehen.
find . -name 'buch.kap*' -exec lpr {} \;
Drucke alle Dateien eines Buch-Manuskripts. Verwendet man xargs,
sieht das Kommando so aus:
find . -name 'buch.kap*' -print | xargs lpr
xargs in Verbindung mit find kann die Effizienz des
Programms erhöhen, da nicht für jede Datei ein neuer Proze&zlig;
gestartet werden muß. Aber es kann auch Gefahren in sich bergen. Stellen
Sie sich vor, ein Bösewicht fürt folgende Kommandos aus:
mkdir "/tmp/boese "
mkdir "/tmp/boese /etc"
touch "/tmp/boese /etc/passwd"
Er legt also - was er auch durchaus darf - zwei Verzeichnisse und eine Datei im
allgemeinen Temporär-Verzeichnis an. Die Gemeinheit liegt darin, daß
das Verzeichnis "boese " mit einem LErrzeichen endet. Bei xargs werden
daraus auf der Kommandozeile zwei Verzeichnisse: /tmp/boese (ohne
Leerzeichen am Schluß) und /etc/passwd. Führt nun der
Superuser das Kommando
find /tmp -mtime +30 -print | xargs rm -f
aus, um ältere Dateien zu löschen, schießt er sich die Passwortdatei
weg. mit der Option -exec kann so etwas nicht passieren.
ps [adeflnptu] (Report Process Status)
Liefert Statusinformationen über
die aktiven Prozesse. Ohne Angabe von Optionen wird Information zu den
Prozessen ausgegeben, die vom jeweiligen Terminal aus gestartet wurden.
Zu jedem Prozeß wird eine Zeile ausgegeben, die Prozeßnummer,
Terminalname, verbrauchte Rechenzeit und das Kommado angibt. Für den
Alltag reichen zwei Optionen:
-e Informationen über alle laufenden
Prozesse ausgeben
-f Vollständige Informationen über die Prozesse
ausgeben.
Beispiel: ps -efIn jeder Zeile werden folgende Informationen
ausgegeben:
Anmerkung: Bei Linux erreicht man Ähnliches mit ps aux (schlimmstenfalls
muss man "man ps" eingeben).
|