Nutzerkommandos - Weiteres |
Job zu bestimmter Zeit starten - at |
Aufruf: at [-V] [-q queue] [-f file] [-mldbv] ZEIT |
Mit at lassen sich Kommandos zu einem späteren Zeitpunkt ausführen.
Der Zeitpunkt lässt sich in verschiedenen Formaten angeben:
17:23
17.23 Uhr des heutigen Tages
midnight
0.00 Uhr
noon
12.00 Uhr
teatime
16.00 Uhr
10:30pm
22.30 Uhr, mit dem Suffix am anstatt »pm« 10:30 Uhr
1204
Am 4. Dezember dieses Jahres, alternative Angaben sind 12.04 und 12/04
7/12/05
Am 12. Juli 2005, alternative Angaben sind 7.12.05 und 71205.
Zeitpunkt + Zeitspanne
Als Zeitpunkt kann jede oben beschriebene Angabe stehen und now (»jetzt«), als Zeitspanne kommt ein Wert gefolgt von minutes (Minuten), hours (Stunden), days (Tage) und weeks (Wochen) in Frage.
tomorrow, today
Spezifizieren den Zeitpunkt »Morgen« und »heute«.
Die Berechtigung zur Benutzung von at kann durch die beiden Dateien /etc/at.allow und /etc/at.deny beeinflusst werden. Existieren die Dateien nicht, sind alle Nutzer zum Aufruf des Kommandos berechtigt. Im Falle einer existierenden /etc/at.allow sind nur die dort aufgeführten Nutzer zur Benutzung zugelassen, die /etc/at.deny wird dann nicht ausgewertet. Gibt es nur letztere Datei, so sind die enthaltenen Nutzer von der Verwendung des Kommandos ausgeschlossen.
at liest die zu startenden Kommandos von der Standardeingabe oder aus einer Datei, falls eine solche mit der Option "-f" angegeben wurde. Alle Kommandos werden in eine Warteschlange eingereiht, deren Name aus einem einzelnen Buchstaben besteht. Die Voreinstellung "a" kann mit der Option "-q" überschrieben werden. Die alphabetische Reihenfolge der Queues gibt die Priorität ihrer Bearbeitung vor.
Nach Beendigung eines Jobs versendet at die Ausgaben des Kommandos per Mail (sendmail muss installiert sein!) an den Auftraggeber. Für Kommandos, die keine Ausgaben erzeugen, kann mit der Option "-m" eine Mail-Benachrichtigung über den erfolgten Abschluss der Bearbeitung erzwungen werden.
user@sonne> at teatime tomorrow at> echo "Wieder mal Feierabend" at> [Ctrl]-[D] <EOT> warning: commands will be executed using /bin/sh job 3 at 2000-06-07 16:00 user@sonne> at now +30 weeks at> mail -s "Wunschliste" Weihnachtsmann@weissnicht.wo < liste.txt at> [Ctrl]-[D] <EOT> warning: commands will be executed using /bin/sh job 5 at 2001-01-02 09:12 |
at-Jobliste betrachten - atq |
Aufruf: atq [-V] [-q queue] |
Der Inhalt der Warteschlange ausstehender at-Jobs wird angezeigt. Sollen nur die Aufträge einer bestimmten Queue betrachtet werden, muss mit der Option "-q" der Name der Warteschlange angegeben werden.
user@sonne> atq 1 2000-06-06 16:00 a 3 2000-06-07 16:00 a 4 2001-01-02 09:07 a 5 2001-01-02 09:12 a 6 2000-06-11 10:16 b |
Die Informationen sind Jobnummer, Zeitpunkt des Auftrags und Name der Warteschlange. Eine analoge Ausgabe liefert at -l.
at-Job abbrechen - atrm |
Aufruf: atrm [-V] job [job...] |
Aufträge können anhand ihrer Jobnummer gelöscht werden:
user@sonne> atrm 3 4 5 6 user@sonne> atq 1 2000-06-06 16:00 a |
at -r arbeitet analog.
Job starten, wenn der Rechner ruht - batch |
Aufruf: batch [-V] [-q queue] [-f file] [-mv] [ZEIT] |
Batch arbeitet analog zum Kommando at mit dem einzigen Unterschied, dass batch den Start des Kommandos soweit zurückstellt, bis die Auslastung des Systems eine gewisse Grenze (load average < 0.8) unterschritten hat.
Das Kommando wird man bspw. dazu benutzen, eine langwierige und ressourcenintensive Berechnung erst nach Feierabend zu starten (wenn normalerweise die Rechner nicht mehr benötigt werden). Sollte aber dennoch ein Kollege Überstunden scheffeln (das soll es wohl geben;-) und den Rechner benutzen, wird die Bearbeitung des Jobs zurückgestellt...
Verwendung und Optionen des Kommandos sind exakt wie bei at beschrieben.
Taschenrechner - bc |
Aufruf: bc [ -lwsqv ] [long-options] [ file ... ] |
bc ist ein Kommandozeilenrechner, der mit beliebiger (!) Genauigkeit zu rechnen vermag. Die Bedienung des Rechners erinnert stark an die Programmiersprache C. Für komplexere Berechnungen wird man deshalb den Algorithmus in eine Datei schreiben und diese als Argument übergeben.
Der bc wird mit der Option -l angewiesen, die Standard-Mathematik-Bibliothek zu verwenden, mit -q verschwindet die lästige Copyright-Ausgabe. Die anderen Optionen betreffen die Kompatibilität zum POSIX-Standard, -w gibt Warnungen bei Nicht-POSIX-konformen Erweiterungen und -s lässt nur POSIX-konforme Funktionen zu.
Ohne eine Dateiangabe im Argument, startet der bc im interaktiven Modus und erwartet die Eingaben. Mit "quit" kann der Rechner wieder verlassen werden:
user@sonne> bc -l bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. scale=20 variable=5625 sqrt(variable) 75.00000000000000000000 quit user@sonne> |
Im Beispiel wurde die Genauigkeit der Ausgabe auf 20 Nachkommastellen gesetzt scale=20, anschließend einer Variablen ein Wert zugewiesen variable=5625 und die Quadratwurzel dieser Variable berechnet sqrt(variable).
Um den Rechner auf der Kommandozeile benutzen zu können, muss er seine Eingaben aus einer Pipe erhalten. Das obige Beispiel hätte man auch so formulieren können (die Skalierung der Ausgabe wurde bewusst weggelassen):
user@sonne> echo
"variable=1764;sqrt(variable)" | bc -ql 42 user@sonne> |
42 ist die Lösung! Wie lautete eigentlich die Frage?
Zahlen werden immer im Format Vorkommastellen.Nachkommastellen angegeben, wobei die Vorkommastellen für sich allein stehen können und diese im Falle des Wertes "0" auch entfallen dürfen. Gültige Angaben sind somit: 12.476212, 42, 0.12 oder kurz .12.
Variablen werden durch beliebig lange Kombinationen aus Buchstaben, Ziffern und dem Unterstrich benannt, wobei das erste Zeichen ein Buchstabe sein muss. Es gibt vier spezielle Variablen, scale setzt die Genauigkeit der Ausgabe, ibase die Basis der Eingabe und obase die Basis der Ausgabe. last enthält immer den zuletzt berechneten Wert.
Um z.B. eine binäre Zahl in eine hexadezimale umzurechnen, geben wir Folgendes ein:
user@sonne> echo
"obase=16;ibase=2;1100;" | bc -l C |
Für komplexere Algorithmen sind Kommentare sicherlich hilfreich. Alle Eingaben des bc, die zwischen /* und */ eingeschlossen sind, werden von diesem ignoriert.
Zur Berechnung stehen zahlreiche Ausdrücke zur Verfügung. An dieser Stelle kann nur auf einige wenige eingegangen werden. Wer sich mit C auskennt, wird die Feinheiten der Verwendung mancher Ausdrücke beurteilen können.
Nachfolgend kann expr eine Variable, eine Zahl oder wiederum ein Ausdruck sein. var bezeichnet immer eine Variable.
-expr
Negation
++var, var++
Inkrement-Operatoren
--var, var--
Dekrement-Operatoren
expr [+-*/] expr
Addition / Subtraktion / Multiplikation / Division
expr % expr
Modulo-Operator
expr ^ expr
Potenzieren
( expr )
Klammerung zur Änderung der Vorangregeln
var = expr
Einfache Zuweisung
var <Operation>= expr
Andere Schreibweise für "var = var <Operation> expr
expr1 < expr2
Kleiner-als Vergleich, analog dazu ">", "<=" (Kleiner oder gleich), ">=", "==" (Gleichheit), "!=" (Ungleichheit)
!expr
Negation
expr && expr
Logisches UND, analog "||" (logisches ODER)
length( expr )
Anzahl Zeichen in expr
read ( )
Liest einen Wert von der Standardeingabe
sqrt( expr )
Quadratwurzel von expr
Weiterhin stehen die bedingte Ausführung if ( expr ) tu_etwas [else tu_etwas], die Schleifen while ( expr ) tu_etwas und for ( [expr1] ; [expr2]; [expr3] ) tu_etwas zur Verfügung. Die weiteren Steuerkonstrukte (return, break, continue, halt) sind exakt wie in C zu handhaben.
Bevor einige Beispiele das Verständnis fördern sollen, folgt noch eine Auflistung mathematischer Funktionen, die verfügbar sind, wenn der bc mit der Option -l gestartet wird:
s (x)
Den Sinus von x
c (x)
Den Cosinus von x
a (x)
Den Arcustangens von x
l (x)
Den natürlichen Logarithmus von x
e (x)
e hoch x
j (n,x)
Besselfunktion
Und nun noch einige Beispiele, die auch eine Funktionsdefinition beinhalten:
user@sonne> echo "scale=50; 4*a(1)" | bc
-l 3.14159265358979323846264338327950288419716939937508 user@sonne> bc -l define f (x) { if (x <= 1) return (1); return (f(x-1) * x); } f(7) 5040 quit |
Kalender - cal |
Aufruf: cal [-mjy] [month [year]] |
Der Standardkalender glänzt zwar nicht gerade mit einer besonderen Optik, dafür beherrscht er die Berechnung der Tage vom 1.1.0001 bis 31.12.9999.
Per Voreinstellung wird der Sonntag als erster Tag der Woche dargestellt, mit der Option -m kann es der Montag sein. Wer an den julianischen Kalenderdaten interessiert ist, der wähle die Option -j und den Kalender für ein ganzes Jahr zaubert -y hervor.
Vergessen Sie nicht, das Jahr mit 4 Ziffern zu benennen, sonst landen Sie knappe 2000 Jahre in der Vergangenheit. Wird als Argument nur eine Zahl angegeben, so wird diese als Jahr interpretiert, bei zweien steht die erste Zahl für den Monat und die zweite fürs Jahr:
user@sonne> cal 7 2000 Juli 2000 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 user@sonne> cal 9 1752 September 1752 So Mo Di Mi Do Fr Sa 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Datumsanzeige - date |
Aufruf: date [OPTION]... [+FORMAT] |
Mit dem Kommando lässt sich die Systemzeit anzeigen und (falls man die Rechte des Administrators besitzt) ändern.
user@sonne> date Fre Jun 9 14:08:51 MEST 2000 |
Als Optionen sind u.a. nützlich: die Anzeige der Modifikationszeit einer Datei mit der Option -r Dateiname, die Anzeige der »Universal Time« -u, das Setzen der Systemzeit -s und die Formatierung der Ausgabe mittels der Option -d Format.
Um die Ausgabe, vor allem für die Verwendung in Shellskripten, zu manipulieren, stehen eine Reihe von Platzhaltern zu Verfügung. Ein solcher Formatstring muss durch ein Plus + eingeleitet werden:
user@sonne> date "+Es ist der %d Tag im
Monat %m des Jahres %Y." Es ist der 26 Tag im Monat 11 des Jahres 2000. |
Solche Platzhalter gibt es sprichwörtlich »wie Sand am Meer«, die Interessanteren enthält nachfolgende Tabelle:
%%
Das Prozentzeichen selbst
%n
Zeilenumbruch
%t
Tabulator
%H bzw. %I
Stunden 24 bzw. 12 Stunden-Format
%M
Minuten
%r bzw. %X
Zeit im 12 bzw. 24 Stunden-Format (Stunden/Minuten/Sekunden [am|pm])
%s
Sekunden seit dem 01.01.1970
%S
Sekunden der aktuellen Minute
%b bzw. %B
Name des Monats mit 3 Stellen bzw. ausgeschrieben
%c
Datum und Zeit im lokalen Format
%d
Tag des Monats
%j
Tag im Jahr
%m
Monat des Jahres (numerisch)
%U
Nummer der Woche im Jahr
%w bzw. %W
Wochentag (0..6) erster Tag ist Sonntag bzw. Montag
%y bzw, %Y
Jahreszahl 2- bzw. 4-stellig
Diskettenzugriff - Die Mtools |
Der Austausch von Daten zwischen Windows-Systemen und Linux erfordert die Festlegung auf ein von beiden Seiten verstandenes Format. Und da sich Windows mit der Unterstützung von Fremdformaten etwas bedeckt hält, ist es an Linux, die Daten entsprechend abzuspeichern.
Für den Zugriff auf MSDOS-Dateien entwickelte man eine ganze Kollektion von Werkzeugen, die sich in Sachen Bedienung stark an den (fast gleichnamigen) DOS-Kommandos orientieren, daher auch der Begriff der m-Tools (MSDOS-Tools). Bedeutung erlangt die Sammlung vor allem beim Zugriff auf DOS-Disketten; die nachfolgenden Beispiele beziehen sich auf dieses Medium.
mattrib
Dient zum Ändern der Attribute einer DOS-Datei. Ein führendes Plus "+"
setzt eine Option; ein Minus "-" entfernt sie.
Als Attribute sind a (Archivbit), r (Nur-Lese-Bit), s
(Systembit) und h (Hidden-Bit) erlaubt. Ohne Angabe einer Option zeigt das
Kommando die Attribute der angebenen Dateien an. Um Attribute rekursiv auf
Unterverzeichnisse anzuwenden, kann die Option -/ verwendet werden.
user@sonne> mattrib a:\hash.h A A:/hash.h user@sonne> mattrib -a a:\hash.h A:/hash.h |
mbadblocks
Überprüft eine DOS-Diskette auf fehlerhafte Blöcke. Solche werden in der FAT (File Allocation Table) markiert und bei einer späteren Neuformatierung (mit mformat) ausgeblendet.
mcd
Wechselt das Verzeichnis in einem DOS-Dateisystem; bzw. zeigt - bei Aufruf ohne Argument - das aktuelle Arbeitsverzeichnis an:
# Ohne Angabe des Dateisystems wird immer A:
angenommen user@sonne> mmd tmp user@sonne> mcd tmp user@sonne> mcd A:\tmp |
mcopy
Dateien werden mit diesem Kommando kopiert, dabei können sowohl Quelle(n) als auch Ziel DOS- oder Unix-Dateien sein. Eine DOS-Datei muss daher explizit durch die Laufwerksangabe spezifiziert werden. Die Angabe des Ziels kann entfallen, dann wird das aktuelle Verzeichnis angenommen. Die wichtigen Optionen sind -/ zum rekursiven Kopieren von Verzeichnisinhalten und -t zur Transformation der DOS-Dateienden in das Unixformat.
# Datei(en) auf Diskette im Laufwerk
a: user@sonne> mcopy foo.* a: # Alle Dateien von Diskette ins aktuelle Verzeichnis user@sonne> mcopy a:* |
mdel
Löscht Dateien auf einem DOS-Dateisystem:
# Datei auf Diskette B löschen: user@sonne> mdel b:foo.bar # Alle Dateien auf Diskette A löschen: user@sonne> mdel \* |
Anmerkung: Das Quoten des Metazeichens (*) ist notwendig, damit es nicht von der lokalen Shell ausgewertet wird.
mdeltree
Dient zum rekusrsiven Löschen von Verzeichnissen auf einem DOS-Dateisystem.
mdir
Zeigt den Inhalt eines Verzeichnisses auf einem DOS-Dateisystem an:
user@sonne> mdir Volume in drive A has no label Directory for A:\tmp . <DIR> 04-14-1999 9:51 .. <DIR> 04-14-1999 9:51 2 files 0 bytes 484 864 bytes free |
mdu
Das Kommando zeigt - analog zum Unixkommando "du" - die Belegung des DOS-Dateisystems an. Die Angabe erfolgt in so genannten Clustern, deren Größe u.a.m. das Kommando minfo offenbart.
mformat
Erzeugt ein DOS-Dateisystem auf einer Diskette. In den meisten Fällen genügt die Angabe des Laufwerks; anhand des Laufwerktyps werden Default-Werte verwendet. Benötigt man abweichende Werte, genügt die Angabe dieser. Für alle nicht spezifizierten Parameter werden automatisch die Voreinstellungen gewählt. Das Kommando selbst versteht (fast) dieselben Optionen, wie das Kommando mkdosfs. Im Zusammenhang mit der Systemadministration (Dateisysteme anlegen) wird näher darauf eingegangen.
minfo
Zeigt die Parameter eines DOS-Dateisystems an.
mkmanifest
Der aus Anwendersicht wohl gravierendste Unterschied zwischen klassischem DOS-
und Unix-Dateisystemen ist die DOS-Beschränkung der Dateinamen auf bestimmte
Zeichen und Länge (auch unter FAT16 und FAT32 bestehen Unterschiede bez.
Unix-Dateisystemen).
Die verschiedenen Mtools-Werkzeuge mappen nun Unixnamen, die nicht in das
8:3-DOS-Schema passen, auf einen unter DOS gültigen Namen. Lesen Sie diese
Diskette später wiederum mit mtools aus, werden die alten Namen rekonstruiert.
Ein Problem haben Sie jedoch, falls Sie solche Dateien in einem Zwischenschritt mit
einem Nicht-Mtools-Werkzeug kopieren, da die Information zur Namensumsetzung nun
verloren geht. Und genau hier setzte mkmanifest an.
Das Kommando erzeugt aus den eingegebenen Namen ein kleines Shellskript, mit dem
sich die "alten" Dateinamen auf jeden Fall rekonstruieren lassen:
user@sonne> mkmanifest
Ein_langer_Dateiname Zu.viele.Punkte illegal: okay.c prn.dev >
manifest user@sonne> cat manifest mv ein_lang Ein_langer_Dateiname mv zuxviele.pun Zu.viele.Punkte mv illegalx illegal: mv xrn.dev prn.dev |
Die Datei "okay.c" ist nicht enthalten, da sie der DOS-Konvention für Dateinamen genügt und somit nicht umbenannt wird. Kopieren Sie die Datei "manifest" ebenso auf Diskette, dann sind Sie jederzeit in der Lage, die originalen Dateinamen wieder herzustellen.
mlabel
Setzt den Namen eines DOS-Dateisystems bzw. liest diesen aus:
user@sonne> mlabel a: Volume has no label Enter the new volume label : test user@sonne> mlabel a: Volume label is TEST |
mmd
Erzeugt ein Verzeichnis auf einem DOS-Dateisystem.
user@sonne> mmd b:\directory |
mmount
Es ist eine Erweiterung des Unix-Mount-Befehls und "mountet" ein DOS-Dateisystem. Alle Optionen, die "mount" versteht, sind zulässig. Für weitere Informationen lese man den Abschnitt Mounten eines Dateisystems (Systemadministration-Dateisysteme).
mmove
Verschiebt Dateien in einem DOS-Dateisystem und/oder benennt sie um. Werden mehrere Dateien angegeben, muss das letzte Argument ein Verzeichnis sein (reines Verschieben). Es lassen sich ebenso Verzeichnisse samt Inhalt verschieben.
mrd
Entfernt ein leeres Verzeichnis aus einem DOS-Dateisystem.
user@sonne> mrd b:\directory |
mread
Kopiert eine Datei eines DOS-Dateisystems in ein Unix-Dateisystem. Mit -t wird das Format automatisch konvertiert (CF/LF nach LF).
mren
Dient zum Umbenennen von Dateien oder Verzeichnissen.
user@sonne> mren a:foo.bla a:foo.old |
mtoolstest
Mit diesem Kommando kann die Konfiguration der Mtools überprüft werden. Die Ausgabe des Kommandos kann als Ausgangspunkt für eigene Konfigurationsdateien dienen.
mtype
Dient zum Betrachten des Inhalts einer DOS-Datei.