Dr. Linux

Aus LinuxUser 01/2000

Dr. Linux

Der Nächste bitte

Komplizierte Organismen, wie Linuxsysteme es nun einmal sind, haben so ihre ganz eigenen Wehwehchen. Dr. Linux beobachtet die Patienten in den Linux-Newsgruppen, stellt an dieser Stelle Rezepte für aktuelle Probleme aus und alternative Heilmethoden vor.

Finden!

Meine Textbestände sind eher chaotisch sortiert. Kann ich unter Linux große Textbestände nach bestimmten Dateien durchsuchen? Und wie lassen sich Textstellen in Dateien anzeigen?

Dr. Linux: Das Kommando find kann nach bestimmten Dateien suchen. Je nach Pfadangabe durchsucht es Verzeichnisse einschließlich der Unterverzeichnisse. find ist sehr mächtig; es gibt Optionen, die beinahe Alles und Jedes abdecken. Dementsprechend umfangreich ist auch die Manpage. Zum Glück braucht man nicht ständig alles, sondern kommt schon mit ein paar Optionen gut um die Runden. Wenn der Name der gesuchten Datei bekannt ist, kann das Kommando find -name eingesetzt werden.

user$ find -name Leuchtkeks

findet die Datei Leuchtkeks im aktuellen Verzeichnis und in dessen Unterverzeichnissen. Dies bedeutet, dass Sie zunächst in das Verzeichnis wechseln müssen, in dem die Datei gesucht werden soll.

user$ find / -name Leuchtkeks

durchsucht alle Verzeichnisse und Unterverzeichnisse nach Leuchtkeks. / steht für das Wurzelverzeichnis. In Verbindung mit dieser Angabe wird find sämtliche Verzeichnisse und Unterverzeichnisse nach der Datei durchsuchen. Das Kommando find / sollte deshalb nicht in Netzwerken eingesetzt werden, da es ein System zu stark belasten kann.

user$ find ~ -name ´*zip´

listet alle Dateien im Homeverzeichnis und untergeordneten Verzeichnissen auf, an deren Namensende sich die Buchstaben zip befinden. Mit dem Jokerzeichen ~ können Sie sich die Pfadangabe für Ihr Home-Directory ersparen, es wird geradewegs durch /home/Ihr_Name (oder wie Ihr Heimatverzeichnis auch immer heißt) ersetzt.

user$ find ~ -name ´*zip*´

zeigt alle Dateien im Homeverzeichnis auf, in deren Namen das Suchmuster zip vorkommt. Dieser Befehl listet als Ergebnis sowohl .zip-Archive auf, als auch Dateien wie beispielsweise bzip2recover, ziptool oder zipfelmütze. Sollten Sie ein DOS- oder Windowsverzeichnis in ihrem System gemountet haben, können Sie gezielt Dateien in diesen Verzeichnissen finden, wenn sie -fstype vfat bzw. -fstype msdos als Option mit find verwenden.

user$ find / -fstype msdos -name *.zip

listet beispielsweise nur .zip-Dateien auf, die sich auf einer MS-DOS-Partition befinden.

user$ find / -fstype vfat -name *.txt

hingegen führt nur .txt-Dateien von einer Windows-Partition auf.

Die Eingabe man find liefert auf mehr als zehn Seiten einen Blick über weitere Möglichkeiten von find. Wenn Ihnen die Kommandozeile noch nicht ganz geheuer ist und Sie mit KDE arbeiten, können Sie für Ihre Sucherei auch das Programm kfind benutzen. Es befindet sich in der Menüleiste und lässt sich mit dem Eintrag Dateien suchen aufrufen.

Abbildung 1: <custom name="span" custom:class="uielement" srcset=

kfind« vereinigt die Funktionalität von find« und grep« in sich.” width=”300″ height=”156″ /> Abbildung 1: kfind« vereinigt die Funktionalität von find« und grep« in sich.

Um Textstellen oder Stichworte im aktuellen Verzeichnis zu finden, bietet sich das Kommando grep (engl.: “get regular expression pattern”) an.

user$ grep Gartenzwerg *.tex

listet beispielsweise alle Zeilen aus .tex-Dateien im aktuellen Verzeichnis auf, die das Suchmuster Gartenzwerg enthalten.

user$ grep -l Gartenzwerg *.txt

spuckt hingegen die Namen aller .txt-Dateien im aktuellen Verzeichnis aus, die das Wort Gartenzwerg enthalten. Es muss aber nicht immer gleich ein ganzes Bündel Dateien sein:

user$ grep "Overkill" Gartenzwerg.txt

führt alle Zeilen mit dem Suchmuster Overkill in der Datei Gartenzwerg.txt auf. man grep gibt einen Überblick, welche Optionen wie mit grep eingesetzt werden können.

Kill and go!

Wenn ein Programm oder die Konsole hängen bleibt, muss ich dann einen Neustart des Systems durchführen?

Dr. Linux: Nein, mit dem Betriebssystem Linux ist ein Reset nicht nötig. Ganz im Gegenteil sollte ein Drücken der Reset-Taste immer vermieden werden, denn es kann zu Datenverlusten führen. Erste Hilfe in einem solchen Fall ist das Drücken der Tastenkombination Ctrl-C alias Strg-C: Die meisten Befehle/Kommandos lassen sich damit abbrechen. Eine ganze Reihe Programme fangen diese Tastenkombination allerdings ab, insbesondere, wenn sie selbst etwas anderes mit diesem Shortcut vorhaben. In diesem Fall hilft der Befehl kill. Er wird zusammen mit einer Prozess-ID (PID) eingesetzt. Eine solche wird an jeden Prozess vergeben.

Falls nötig, ist zunächst ein Wechsel der Konsole mit Alt-F1(F2…F6) angebracht. Benutzer des X-Window-Systems können ihre grafische Oberfläche durch die Tastenkombination Strg-Alt-F1 (F2…F6) ebenfalls verlassen. Auf der unblockierten Konsole setzen Sie das Kommando ps (“Prozess-Status”) ab. Diese Eingabe erzeugt eine Tabelle:

user$ ps
PID TTY STAT TIME COMMAND
170   4 S    0:00 login -- userinnen
479   1 S    0:00 grep Leuchtkeks
480   4 R    0:00 ps

Der Befehl, der zum Stillstand des Terminals geführt hat, wird leicht an seinem Eingabekommando in der Spalte COMMAND erkannt, es handelt sich in diesem Beispiel um eine unvollständige grep-Eingabe. Er befindet sich auf Konsole 1 (TTY) und hat die Prozess-ID (PID) 479. Die Eingabe

user$ kill 479

terminiert den Prozess, und nachdem Sie mit Alt-F1 (F2…F6) auf die Konsole (resp. TTY – “Teletype Terminal”, ein Begriff aus der Großrechnerzeit) zurückgeschaltet haben, ist das Terminal wieder voll einsatzfähig. Sollte die Eingabe von kill PID nichts bewirkt haben (nachzuprüfen mit einem neuen ps in der Spalte STAT), so ist die Eingabe von kill -9 PID tödlich für alle Prozesse. STAT zeigt den Prozessstatus an:

  • S = schlafend
  • R = running (laufend)
  • T = terminiert
  • Z = Zombie

ps kann mit verschiedenen Optionen eingesetzt werden:

  • ps a listet alle aktiven Prozesse auf.
  • ps x weitet die Auflistung auf Prozesse aus, die mit keinem Terminal verbunden sind.
  • ps u erweitert die Ausgabe um den Benutzernamen und die Startzeit.
  • Wenn Sie diese Optionen spannend finden, probieren Sie doch auch noch ps f, das die Prozessfamilien als Bäume darstellt.

Die Optionen können auch alle gleichzeitig eingegeben werden. Allerdings wirkt ps aux auf Einsteiger zunächst recht unübersichtlich. Wer mit einer grafischen Oberfläche arbeitet, kann sich zum “Abschießen” eines hartnäckigen Programms auch des Kommandos xkill, eingegeben in einer Befehlszeile, bedienen. Der Cursor wandelt sich in ein Zielkreuz, mit dem das bockige Fenster “um die Ecke gebracht” werden kann. Allerdings ist xkill mit Vorsicht anzuwenden; es besteht bei unvorsichtigem Einsatz die Gefahr des Verlusts ungesicherter Daten.

Run, run Linux

Was sind Runlevel? Kann ich damit meinen PC schneller machen?

Dr. Linux: Unix-Systeme können in verschiedenen Betriebszuständen laufen, die als Runlevel bezeichnet werden. Leider ist die Nummerierung der Runlevel bei den Distributionen nicht identisch. Bevorzugen Sie ein System, mit dem ein grafischer Login möglich ist, so können Sie das passende Runlevel als Default runlevel einsetzen, möchten Sie dieses System zeitweise mit Netzwerkfunktionalität arbeiten lassen, so können Sie dies ebenfalls durch einen Wechsel der Runlevel tun. Die Runlevels bei der SuSE-Distribution sehen zum Beispiel folgendermaßen aus:

  • Runlevel 0 ist halt und fährt das System zum Ausschalten herunter.
  • Runlevel S ist der Single-User-Modus, in dem root die Chance hat, an einem kaputten System mit nur wenig Funktionalität noch einiges zu retten.
  • Runlevel 1 bietet Multi-User-, aber keine Netzwerkfunktionalität.
  • Runlevel 2 erlaubt es ebenfalls mehreren Benutzern, gleichzeitig an der Maschine zu arbeiten (multi-user) und stellt zusätzlich Netzwerkfunktionalität (lokale Mail, Einloggen von entfernten Maschinen etc.) zur Verfügung.
  • Runlevel 3 ist als eine weitere Multi-User-Betriebsart mit Netzwerk und grafischem Login vorkonfiguriert.
  • Runlevel 6 löst einen Reboot aus.

In der Datei /etc/inittab können Sie nachsehen, welche Nummerierung Ihr System für die Runlevel vornimmt bzw. welche Runlevel schon vorkonfiguriert sind. Allen Systemen gemeinsam sind die Runlevel 0 und 6, die mit Systemhalt und Reboot belegt sind. Je nach Runlevel werden bestimmte Programme gestartet, zum Beispiel xdm, der “X-Display-Manager”, der einen grafischen Loginbildschirm liefert, oder mehrere getty, die den Login an einer virtuellen Konsole ermöglichen.

Der Single-User-Modus wird vom Systemverwalter zum Beispiel für kritische Wartungsarbeiten aufgerufen. In diesem Modus kann nur er auf das System zugreifen, für andere Benutzer ist kein Login möglich. Wer sich mit der Konfiguration von Runlevels beschäftigen möchte, dem ist geraten, sich vorher Fachliteratur zur Systemadministration zu Gemüte zu führen.In welchen Runlevel ein System standardmäßig bootet, legt die Zeile

id:3:initdefault:

in /etc/inittab fest. Das Beispiel gehört zu einem Slackwaresystem, das im Runlevel Nummer 3 startet. Der aktuelle Runlevel kann ohne Reboot mit telinit geändert werden, häufig ist telinit jedoch nur ein Link auf init. Probieren Sie doch mal ein

# /sbin/telinit 0

anstelle eines /sbin/shutdown -h now, bevor Sie Ihren Rechner ausschalten wollen.

Glossar

gemountet

Einbinden der Daten eines Datenträgers in das Dateisystem bezeichnet man als mounten. Erst nach einem entsprechenden mount-Befehl kann man tatsächlich auf sie zugreifen.

.tex-Dateien

TeX (gesprochen: “Tech” wie in “Technik”) ist ein Satzprogramm, anders ausgedrückt, ein Textformatierer; es wurde zunächst im Wesentlichen zur Erstellung wissenschaftlicher Arbeiten entwickelt. Im Gegensatz zu den gängigen Textverarbeitungen der PC-Welt arbeitet TeX nicht mit WYSIWYG (“What-You-See-Is-What-You-Get”), sondern ähnlich einer Programmiersprache. Der Text kann mit einem beliebigen Editor wie vi oder emacs erstellt werden. Die Struktur eines Texts wird zusammen mit dem Text in einer .tex-Datei erfasst, die dann zu einer plattformübergreifenden Datei weiterverarbeitet werden kann. TeX und seine Variationen sowie die dazu gehörenden Makropakete (wie LaTeX) sind in der Unix-Welt sehr verbreitet.

Prozess

Der Betriebssystem-Kern (“Kernel”) hat direkten Zugriff auf die Ressourcen des Computers, wie zum Beispiel Speicher und Rechenzeit. Wird ein Kommando abgeschickt oder ein Programm aufgerufen, so wird der benötigte Programmcode in den Hauptspeicher geladen und gestartet. Dieses Programm wird nun als Prozess (engl. “task”) bezeichnet. Prozesse haben keinen Zugriff auf die Ressourcen, sie fordern diese jeweils vom Kernel an. Wird das gleiche Programm, zum Beispiel das Kommando find von zwei Usern gestartet, so handelt es sich um zwei verschiedene Prozesse, obwohl beide das gleiche Programm ausführen lassen. Der Betriebssystem-Kern verteilt die nötige Rechenzeit und den Speicher so blitzschnell, dass der Eindruck entsteht, Programme könnten gleichzeitig ablaufen. Prozesse können sich vermehren, indem sie durch Verdopplung Kinderprozesse (engl. “child”) entstehen lassen; dabei werden sie selber zu Elternprozessen (engl. “parent”). Elternprozesse können darauf warten, dass ihre Kinderprozesse sich beenden oder sterben; umgekehrt geht dies nicht (siehe auch Zombie).

Zombie

Im Film “Dawn of the Dead”, der hierzulande “Zombie” hieß, gibt es die Definition: Wenn in der Hölle kein Platz mehr ist, dann kehren die Toten auf die Erde zurück. Ganz so schlimm ist der Begriff Zombie in der Unixwelt nicht zu verstehen. Es ist einfach ein Prozess, der sich beendet hat oder beendet wurde. In der Fachsprache heißt dies gestorben. Ein Zombie speichert einen Zahlenwert und wartet darauf, dass dieser von seinem Elternprozess gelesen wird, bevor er selber gelöscht wird. Weigert sich der Elternprozess aus irgend einem Grund, sein “Zombiekind” so zu erlösen, geistert es ruhelos durch die Prozesstabelle.

LinuxUser 01/2000 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben