Linuxfibel - Nutzerkommandos - Weiteres
Aus LinWiki.de
Inhaltsverzeichnis |
[Bearbeiten] 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
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] 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.


