Home / LinuxUser / 2002 / 05 / PIDs, Daemonen, Zombies und Jobs

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Quicklebendig und totgeglaubt

PIDs, Daemonen, Zombies und Jobs

Hollywoods Alpträume im System?

Wenn ich top aufrufe, um die Systemauslastung zu überprüfen, finde ich manchmal einen oder mehrere Zombies im System (Listing 3). Was bedeutet das?

Dr. Linux: Der Film "Dawn of the Dead", der hierzulande "Zombie" hieß, definiert diesen Begriff so: Wenn in der Hölle kein Platz mehr ist, dann kehren die Toten auf die Erde zurück.

Wem jetzt bereits vor seinem Linux-System gruselt, kann sich beruhigt zurücklehnen, obwohl auch in der Unix-Welt gestorben wird, und zwar von Prozessen, wenn sie sich beenden oder beendet werden. Ein Zombie ist ein toter Prozess, dessen Exit-Status vom Kernel weiterhin in der Prozesstabelle vorgehalten wird und darauf wartet, dass sein Elternprozess ihn liest. Erst dann kann er in Frieden aus der Prozesstabelle gelöscht werden. Stirbt der Elternprozess, bevor er diesen Zahlenwert gelesen hat, wird der Zombie ebenfalls gelöscht.

Listing 3

top

sieht einen Zombie

 1:01am up 13:29, 1 users, load average: 0.25, 0.19, 0.1288 processes: 86 sleeping, 2 running, 1 zombie, 0 stoppedCPU states: 7.2% user, 8.0% system, 0.0% nice, 84.6% idleMem: 320072K av, 293952K used, 26120K free, 0K shrd, 16496K buffSwap: 305152K av, 3276K used, 301876K free 140224K cached
  PID USER     PRI  NI  SIZE  RSS SHARE STAT %CPU %MEM   TIME COMMAND
 1719 perle     19   0  9224 8860  7164 R     8.0  2.7   0:25 kdeinit
 1286 root      16   0 22264  13M  1720 S     5.7  4.3   9:40 X
 4808 perle     14   0  1096 1096   792 R     1.3  0.3   0:09 top
    1 root       9   0   208  208   176 S     0.0  0.0   0:04 init
[…]
 1445 root       9   0     0    0     0 Z     0.0  0.0   0:00 cron <defunct>
[…]

Hintergrund oder Vordergrund?

Dass ich auf einer Kommandozeile Programme im Hintergrund starten kann, wenn ich ein & hinter den Aufruf setze, ist mir bekannt. Mit welchem Befehl hole ich mir aber einen von mehreren Hintergrund-Prozessen wieder in den Vordergrund zurück, so dass ich sie beispielsweise mit [Strg-C] beenden kann?

Dr. Linux: Programme, die auf einer Kommandozeile in den Hintergrund geschickt werden, um die Konsole nicht zu blockieren, bezeichnet man als Jobs. Beim Start eines Jobs erhält der Befehl zusätzlich zu seiner Prozessnummer eine Klammern gesetzte Ziffer, die so genannte Job-Nummer.

perle@maxi:~> emacs &
[1] 1650

Die Hintergrundprozesse lassen sich für jede Konsole (und jedes X-Terminal) mit dem Befehl jobs auflisten:

perle@maxi:~> jobs
[1]   Running                 emacs &
[2]-  Running                 gimp &
[3]+  Running                 xtetris &

Die aktiven Hintergrund-Programme sind mit Running gekennzeichnet, (englisch für "laufend"). Möglich ist auch Stopped für unterbrochene Programme, Terminated (deutsch: Beendet) oder Done. Ferner finden Sie Minus- und Pluszeichen vor. + kennzeichnet den zuletzt gestarteten Hintergrundprozess, - den vorhergehenden. Diese Zeichen können als Argumente mit vorangestelltem Prozentzeichen (%) an den Befehl fg übergeben werden, der einen Hintergrundprozess in der Vordergrund (englisch: "foreground") holt. Weitere mögliche Argumente wären

  • %n, wobei n durch die Job-Nummer, also die in Klammern gesetzte Zahl, ersetzt werden muss.
  • %e, das den Job, dessen Befehlszeile mit der Zeichenkette e anfängt, in den Vordergrund holt. Wenn mehr als ein Hintergrundbefehl auf die Zeichenkette passt, erhalten Sie eine Fehlermeldung:
bash: fg: ambigious job spec: e

Das bedeutet in etwa "Mehrdeutige oder verschwommene Job-Spezifikation: e".

  • %?s, das den Hintergrundprozess hervorholt, dessen Befehlszeile die Zeichenkette s enthält (oder sich über eine mehrdeutige Job-Spezifikation beschwert).
  • %% oder %+, die beide den aktuellen Job meinen.
  • %-, das für den vorhergegangenen Job steht.

fg ist jedoch nicht der einzige Befehl, der bei der Job-Verwaltung in der bash hilft. Auch die folgenden Kommandos nehmen die eben beschriebenen Argumente entgegen:

  • bg schickt einen Job in den Hintergrund. Damit bg in einer von einem Vordergrundprozess blockierten Shell überhaupt eingegeben werden kann, muss dieser mit [Strg-Z] vorübergehend gestoppt werden.
  • kill beendet den als Argument angegebenen Job. Passt das Muster auf mehrere Prozesse, gibt es allerdings eine Fehlermeldung.
  • Auch die Auflistung der Jobs mit jobs lässt sich mit den besprochenen Argumenten auf bestimmte Prozesse beschränken. Praktisch sieht das etwa so aus:
perle@maxi:~> jobs
[1]   Running                 emacs &
[2]-  Running                 gimp &
[3]+  Running                 xtetris &
perle@maxi:~> kill %1
perle@maxi:~> jobs
[1]   Beendet                 emacs
[2]-  Running                 gimp &
[3]+  Running                 xtetris &

Bevor Sie Dateien-bearbeitende Programme wie den Emacs abschießen, sollten Sie jedoch einen Moment innehalten. Mit kill verlagern Sie Ihre ungesicherten Text-Dateien nämlich ebenfalls ins Nichts. Verlassen Sie die Konsole, aus der das Programm gestartet wurde, mit exit, bleibt Ihnen der Editor allerdings erhalten, und Sie können Ihre Daten ggf. noch sichern.

Liegen im mit exit zu beendenden Terminal noch unterbrochene Jobs in Warteposition, werden Sie freundlich daran erinnert:

There are stopped jobs.

Erst auf ein zweites exit hin verabschiedet sich die Konsole von Ihnen.

Glossar

umount

Das Einbinden von Datenträgern in den Linux-Dateibaum geschieht mit dem root vorbehaltenen mount-Befehl. Ehe man eine gemountete CD oder Diskette wieder aus dem Laufwerk entnehmen kann, ist ein umount-Befehl zwingend nötig. Auch Festplattenpartitionen lassen sich so dem Zugriff unter Linux wieder entziehen. In der Datei /etc/fstab kann der Systemverwalter jedoch auch festlegen, dass unprivilegierte Benutzer bestimmte Datenträger wie CD-ROMs ebenfalls ein- und aushängen dürfen.

Prozess

Der Betriebssystem-Kern (Kernel) hat direkten Zugriff auf die Ressourcen des Computers, zum Beispiel Speicher und Rechenzeit. Wird ein Kommando abgesetzt oder ein Programm aufgerufen, so lädt er den benötigten Programmcode in den Hauptspeicher. So gestartet bezeichnet man dieses Programm nun als Prozess (englisch: "task"). Jeder Prozess hat eine eindeutige Prozessnummer (PID), die das System in einer Prozesstabelle festhält. Prozesse haben keinen Zugriff auf die Ressourcen, sie fordern diese jeweils vom Kernel an. Wird das gleiche Programm, z. B. das Kommando gimp, zweimal gestartet, so handelt es sich (in der Regel) um zwei verschiedene Prozesse, obwohl das gleiche Programm ausgeführt wird. 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 (englisch: "child") entstehen lassen; dabei werden sie selber als Elternprozess (englisch: "parent") bezeichnet. Elternprozesse können darauf warten, dass ihre Kinderprozesse sich beenden oder sterben; umgekehrt geht dies nicht.

Daemonen

Eine Abkürzung für "Disk and Execution Monitor". Daemonen sind keine Bestandteile des Systemkerns, sondern Programme, die im Hintergrund laufen und ihre Leistungen anderen Programmen oder Rechnern zur Verfügung stellen. Einige werden beim Booten gestartet und bleiben während der gesamten Laufzeit eines Systems aktiv; andere sind nur solange aktiv, wie ihre Dienste benötigt werden.

Exit-Status

Ein (vom Programmierer) festgelegter Zahlenwert, der beschreibt, wie ein Programm aus dem Leben geschieden ist – erfolgreich, aufgrund eines Bugs etc.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...