[Next] [Previous] [Top]

UNIX-Lehrtext

3. Shells


3.1 Eigenschaften, Startup-Dateien

Die Shell kümmert sich um die Arbeitsumgebung. Sie setzt den Prompt, teilt der Maschine mit, wo nach neuer E-Mail (elektronischer Post) geschaut werden soll - falls vorhanden - etc. Um dies zu tun, führt die Shell mindestens eine Startup-Datei, meistens sogar zwei (siehe Tabelle) aus. Einige Shells haben einen sog. History-Mechanismus, der sich die letzten eingegebenen Kommandos merkt und eine schnelle Wiederausführung dieser Kommandos, auch in abgewandelter Form, erlaubt. Eine andere angenehme Eigenschaft ist Job-Control. Dies ermöglicht, einen bereits laufenden Job zu stoppen oder Jobs im Hintergrund zu starten, d.h. die Shell wartet nicht darauf, bis diese Jobs beendet sind, sondern gibt einem sofort den Prompt zurück. Dadurch kann man weiterarbeiten, während der Job im Hintergrund rechnet.

Es folgt eine kurze Uebersicht über die Eigenschaften verschiedener Shells.

sh wird auch Bourne Shell genannt. $ENV als zweites Startup-File für ksh bedeutet, dass der Name dieser zweiten Datei in der ersten Startup-Datei gesetzt wird. Oft wird ".kshrc" für ksh verwendet. Das $-Zeichen bedeutet in Kombination mit Shell-Variablen, dass der Wert dieser Variablen eingesetzt werden soll.

Im AIX kopiert der RZU-Befehl copyst die Standard-Profile des Zentrums Informatikdienste in Ihr HOME-Directory. Siehe

   man copyst
Das Zentrum Informatikdienste sorgt in der KornShell dafür, dass auf der Kommandozeile die Cursor-Tasten funktionieren und emacs-Befehlssequenzen gelten. Vergleiche auch Kapitel 6.4 auf Seite 26.

3.2 History und Job-Control

Die folgende Tabelle gibt einen Ueberblick über History-Kommandos in den verschiedenen Shells.



Es gibt in allen drei Shells noch fortschrittlichere Techniken, um vorangegangene Kommandozeilen zu modifizieren. So erlauben ksh und tcsh, nach einem vorangegangenen Ausdruck zu suchen, und holen die entsprechende Kommandozeile zurück, so dass sie editiert werden kann.

Das Zentrum Informatikdienste sorgt in der KornShell dafür, dass auf der Kommandozeile die Cursor-Tasten funktionieren und emacs-Befehlssequenzen gelten.

Auf AIX und BSD-Systemen kann man mit "C-z" einen Job stoppen. Das Kommando jobs zeigt alle gestoppten Jobs mit einer Nummer versehen an. Das Kommando "fg %n" holt Job Nr. n zurück in den Vordergrund. Wenn nur ein gestoppter Job vorliegt, genügt fg.

Tippt man nach Stoppen (mit Control-z) eines Jobs "bg %n", so wird Job Nr. n in den Hintergrund geschickt und dort weiter bearbeitet, ohne dass die Shell auf die Beendigung des Jobs wartet. Man kann einen Job auch direkt im Hintergrund starten, indem man an die entsprechende Kommandozeile ein &-Zeichen anhängt. Diese Methode funktioniert auch bei Systemen, die das nachträgliche Stoppen und In-den-Hintergrund-Schicken eines Jobs nicht erlauben (SVR3).

Im AIX ermöglicht es der LoadLeveler, Programme auf der SP1 laufen zu lassen. Siehe

   man LoadLeveler

3.3 Das nice-Kommando

Rechenintensive Jobs können eine Maschine für andere Benutzer ziemlich unbrauchbar machen, selbst wenn andere Benutzer nur wenig rechenintensive Aufgaben wie Editieren erledigen möchten. Um diese Situation zu entschärfen, sollten aufwendige Jobs mit einer niedrigeren Priorität gestartet werden. Dann nämlich wird z.B. der Editor bevorzugt behandelt, so dass vernünftiges Arbeiten damit möglich ist, obwohl auf der Maschine noch ein grosser Job rechnet. Falls keine anderen Prozesse auf der Maschine laufen, wird die Laufzeit des Jobs durch die niedrigere Priorität nicht beeinflusst. Prozesse mit gleicher Priorität werden von der CPU gleichberechtigt behandelt.

Die Priorität wird mithilfe des nice-Kommandos verringert. Die Skala von nice-Werten reicht meistens von 0 bis 39, wobei für Benutzerprozesse der Wert 20 als Voreinstellung gewählt wird. Je höher der nice-Wert, desto niedrigerer die Priorität (man ist dann "nicer" zu den anderen Benutzern). Ein Benutzer kann übrigens die Priorität seiner Prozesse nur verringern, nicht aber erhöhen.

Um einen Job mit niedrigerer Priorität zu starten, verwendet man das Kommando nice gefolgt von einem Wert und dem zu startenden Kommando. Um etwa ein Programm mit einem um 10 niedrigeren nice-Wert zu starten, tippt man

   nice -10 Programm
Unglücklicherweise ist diese Syntax nicht eindeutig, wenn die Benutzerin die Shell csh verwendet. Csh hat nämlich ein eigenes nice-Kommando und dieses verlangt anstelle des "-" ein "+", weil csh dieses Zeichen als Vorzeichen interpretiert und nicht, wie das systemeigene nice-Kommando, das bei allen anderen Shells verwendet wird, als Options-Minuszeichen. Um dieses Problem zu umgehen, kann man mit dem Kommando "/bin/nice" immer das systemeigene nice-Kommando mit der "-" Syntax aufrufen.

3.1 Eigenschaften, Startup-Dateien
3.2 History und Job-Control
3.3 Das nice-Kommando

UNIX-Lehrtext - 23 SEP 94
[Next] [Previous] [Top]

Generated with WebMaker