LPIC101/103.5 Prozesse erzeugen, überwachen und beenden
Ziel: Erlernen die einfache Prozessverwaltung zu beherrschen.
Wichtigste Wissensgebiete:
> Jobs im Vordergrund und im Hintergrund ablaufen lassen
> einem Programm signalisieren, dass es nach dem Abmelden weiterlaufen soll
> Prozesse erzeugen, überwachen und beenden
> aktive Prozesse beobachten
> Prozesse zur Ausgabe auswählen und sortieren
> Signale an Prozesse schicken
Liste wichtiger Dateien, Verzeichnisse und Anwendungen:
- &
- bg
- fg
- jobs
- kill
- nohup
- ps
- top
- free
- uptime
- pgrep
- pkill
- killall
- watch
- screen
- tmux
Überwachen von Prozessen
Mit dem Kommando ps können Sie die aktuell auf einem Computer laufenden Prozesse anzeigen. Es handelt sich um eine Momentaufnahme. Programme mit kurzer Lebensdauer (z. B. df), werden mit ps nicht anzeigt. Das Kommando ps ohne Optionen ausführen, erhalten Sie eine Liste der Prozesse, die auf dem aktuellen Terminal laufen. Wenn Jobs im Hintergrund laufen (o. stehen), werden diese auch angezeigt.
- -a zeigt auch die Prozesse anderer Benutzer an. Voraussetzung ist, dass diese Prozesse mit einem Terminal verknüpft sind.
- -u zeigt auch die Startzeit, den Pfad zur ausführbaren Datei und den ausführenden Benutzer an.
- -x führt auch die Prozesse auf, die nicht mit einem Terminal verbunden sind (z. B.init oder cron).
- -C "prozess" sorgt für die Ausgabe aller Instanzen eines auf der Kommandozeile angegebenen Prozesses.
- -U "benutzer" zeigt die Prozesse eines bestimmten Benutzers an.
- top Mit top können Sie die auf einem Computer laufenden Prozesse in Echtzeit überwachen. Während der Ausführung werden die folgenden Informationen dynamisch im Terminal ausgegeben:
allgemeine Informationen, wie Uhrzeit, Uptime, Anzahl der angemeldeten Benutzer, durchschnittliche Systemauslastung
Tasks: Anzahl der Prozesse insgesamt, laufende Prozesse, schlafende Prozesse, gestoppte Prozesse und Zombie-Prozesse
CPU(s): Benutzung durch Benutzerprozesse, Systemprozesse, den Idle-Prozess u. a.
Mem: Speicher insgesamt, in Verwendung, freier Speicher und für Buffers verwendeter Speicher
Swap: diverse Werte zur Verwendung der Swap-Partition(en)Anschließend folgt eine Auflistung der laufenden Prozesse. Diese werden standardmäßig in Reihenfolge der CPU-Verwendung ausgegeben. Die inaktiven Prozesse werden anschließend in der Reihenfolge der PIDs ausgegeben. Beachten Sie bitte, dass das Programm top selbst auch Systemressourcen belegt und deshalb das Messergebnis beeinflusst
Wichtige Interaktivoptionen:
- k (kill) tötet einen Prozess. Es müssen sowohl die PID als auch das Signal angegeben werden.
- n (number of) nennt die Anzahl der Zeilen, die top ausgibt.
- r (renice) ändert den Nice-Wert eines Prozesses zur Laufzeit.
- h (help) gibt eine Hilfe aus.
- q (quit) beendet das Programm.
Wichtige Kommandozeilenoptionen:
- -i zeigt nur die Prozesse an, die aktiv sind. Schlafende Prozesse werden ignoriert.
- -b (batch) kann in Kombination mit einem Redirektor verwendet werden, um die Ausgabe in eine Textdatei umzuleiten.
- -d (delay) gibt das Aktualisierungsintervallin Sekunden an. Der Standardwert ist eine Sekunde.
- -q startet top mit Echtzeitausgabe (wird nicht von allen Versionen des Programms unterstützt).
- watch Ein sehr nützlicher Helfer ist das Programm watch. Sie können es immer dann einsetzen, wenn ein anderes Programm eine Ausgabe auf dem Terminal macht und sich dann wieder beendet. Vielleicht wollen Sie z. B. Dateien dabei beobachten, wie diese ihre Größe ändern, während sie kopiert oder von dd erzeugt werden. Es gibt viele Situationen, in denen man mehrfach dasselbe Kommando gibt, um etwas zu beobachten.
Signale an Prozesse senden
Wenn Sie einen Prozess zur Laufzeit beeinflussen wollen, können Sie diesem Prozessein Signal senden. Es gibt insgesamt 64 verschiedene Signale. Die gute Nachricht ist, dass Sie nicht alle Signale für die Prüfung kennen müssen. Sie erhalten eine Auflistung aller Signale, wenn Sie das folgende Kommando ausführen:
archangel:~ # kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
... weitere Zeilen wurden abgeschnitten ...
Die folgenden Signale werden häufig (auch manuell) an Prozesse übermittelt. Sie sind sowohl für die Praxis als auch für die Prüfung von Interesse:
1 bzw. SIGHUP ist das Hang-up-Signal, das ursprünglich Modems zum Auflegen veranlasste. Es wird auch benutzt, um Prozesse, die als Daemons laufen (bind, squidusw.), zu veranlassen, ihre Konfigurationsdateien neu einzulesen.
9 bzw. SIGKILL beendet einen Prozess mit Gewalt. Dieses Signal sollte nur in Notfällen verwendet werden, wenn Signal 15 kein Ergebnis bringt. Ein mit SIGKILL beendeter Prozess räumt nicht auf (temporäre Dateien usw.).
15 SIGTERM fordert einen Prozess auf, sich selbst zu beenden. Der Prozess erhält die Gelegenheit, Aufräumaktivitäten durchzuführen. Weitere Signale, die häufig vorkommen, aber über Umwege an den Prozess gesendet werden, sind folgende: 2 bzw. SIGINT führt einen Programmabbruch aus. SIGINT wird gesendet, wenn die Tastenkombination (Strg) + (C) betätigt wird.
18 bzw. SIGCONT setzt einen Prozess fort, der zuvor mit SIGSTOP angehalten wurde. Das Signal SIGCONT wird durch die Kommandos fg und bg gesendet, die im nächsten Abschnitt behandelt werden.
19 bzw. SIGSTOP hält einen Prozess an. Der Prozess kann später mit SIGCONT fortgesetzt werden.
20 bzw. SIGTSTP hält einen Prozess an. Der Prozess bleibt speicherresident und kann mit SIGCONT fortgesetzt werden. Die Tastenkombination (Strg) + (Z) sendet dieses Signal.