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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(233 Punkte bei 16 Stimmen)
Re: War doch klar...
(162 Punkte bei 6 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(80 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

01.05.2002 Unix-Systeme sind nichts für Zartbesaitete: In der Welt der Prozesse wird gekillt und gestorben, wimmelt es von Zombies und Daemonen.

Dr. Linux

Komplizierte Organismen, wie Linux-Systeme 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.

Welches Programm hält das Laufwerk fest?

Nachdem ich eine CD mit Grafiken auf meinem Linux-Rechner angesehen hatte, hatte ich folgendes Problem: Beim Versuch, das CD-Laufwerk auszuhängen, kam die Fehlermeldung:

umount: /media/cdrom: Das Gerät wird momentan noch benutzt.

Wie bekomme ich heraus, welches Programm ein umount verhindert?

Abbildung 1: Welches Programm hält das Laufwerk fest?

Dr. Linux: Ob auf einer grafischen Oberfläche die Fehlermeldung aus Abbildung 1 aufpoppt oder auf einer Kommandozeile die beschriebene Zeile bzw. die englische Version

umount: /media/cdrom: device is busy

erscheint – die Fahndung nach dem Prozess, der das Laufwerk bindet, leitet man ganz einfach mit dem Befehl lsof ("list open files"; liste offene Dateien auf) ein. Dieses Kommando lässt sich so vielseitig einsetzen, dass die passende Manpage über 2000 Zeilen enthält. Es ist in der Regel unter /usr/sbin zu finden – sofern Ihr Suchpfad dieses Verzeichnis nicht enthält, müssen Sie den Befehl statt mit einem einfachen lsof als /usr/sbin/lsof aufrufen.

Als Argument übergeben Sie ihm den Namen und ggf. den Pfad der Datei, von der Sie wissen wollen, welche Prozesse auf sie zugreifen; im Fall eines blockierten CD-Laufwerks die Pfadangabe der entsprechenden Gerätedatei. Ohne Angabe eines Beobachtungsobjekts präsentiert Ihnen lsof alle offenen Dateien Ihres Systems, eine Liste also, die Kurzgeschichtenlänge erreichen kann und nur in Ausnahmefällen nützlich ist.

Wenn Ihnen Windows-Laufwerksbuchstaben noch geläufig und Sie unsicher sind, wie genau Ihr CD-Laufwerk unter Linux heißt, schlagen Sie das schnell mit dem Befehl mount nach. mount ohne weitere Angaben listet alle derzeitig eingehängten Laufwerke auf, darunter selbstverständlich auch die CD, die sich nicht unmounten lässt:

perle@maxi:~> mount
/dev/hda7 on / type ext3 (rw)
[…]
/dev/hdb on /media/cdrom type iso9660 (ro,nosuid,nodev,user=perle)

Im Beispiel hängt das CD-ROM-Laufwerk als Slave am primären IDE-Controller (/dev/hdb), die auf der CD enthaltenen Daten sind unterhalb des Verzeichnisses /media/cdrom im Linux-Dateibaum einzusehen. Am Filesystem-Typ iso9660 erkennt man, dass es sich um eine Daten-CD handelt.

Ein lsof /dev/hdb sorgt nun für eine Ausgabe wie in Listing 1. Um zu erfahren, welche Prozesse auf Daten auf der CD zugreifen, schauen wir uns insbesondere die folgenden Ausgabespalten an:

  • Die Spalte COMMAND gibt das zugreifende Kommando aus, eventuell auf neun Buchstaben verkürzt.
  • PID enthält die Prozess-Identifikationsnummer, die man beispielsweise braucht, um den entsprechenden Prozess mit dem kill-Befehl ins Nirvana zu schicken.
  • In der dritten, mit USER überschriebenen Spalte gibt lsof den Namen des Anwenders aus, der den Prozess angeschubst hat, unter Umständen lediglich dessen Benutzer-ID (UID).

Listing 1

Beispielausgaben von

lsof
perle@maxi:~> lsof /dev/hdb
COMMAND  PID  USER    FD   TYPE  DEVICE   SIZE  NODE  NAME
 gs      1252 perle    3r   REG   3,64 593581 47726 /media/cdrom/autoren.pfd

Wenn Sie unter COMMAND ein Programm finden, das Sie selbst gar nicht gestartet haben und der Sache vollständig auf den Grund gehen wollen, lohnt sich der Einsatz des Klassikers pstree. Dieses Kommando stellt Prozesse in Baumform dar, so dass Sie schnell den Überblick darüber bekommen, welche Prozesse welche anderen Prozesse gestartet haben. Mit der Option -p enthält die pstree-Ausgabe auch die jeweiligen PIDs in Klammern (Abbildung 2). Natürlich gibt es auf allen grafischen Oberflächen Programme zur Prozessverwaltung. Wenn Sie mit einem davon Freundschaft geschlossen haben, können Sie es selbstverständlich als Alternative zu pstree einsetzen, das auf allen, auch älteren, mit wenig Hauptspeicher ausgestatteten Systemen läuft.

Abbildung 2: pstree stellt Prozesse in Baumform dar

Verhindern Prozesse das Aushängen der CD, die Sie unter Ihrer User-ID gestartet haben, können Sie sie mit dem Befehl kill und der jeweiligen PID als Argument abschießen. Reagiert der Prozess darauf nicht, setzen Sie ihm mit kill -9 die Pistole auf die Brust:

perle@maxi:~> kill -9 1252

Prozesse anderer User darf lediglich root abschießen; dass Sie mit root-Vollmachten ausgestattet besonders vorsichtig vorgehen sollten, ergibt sich dabei von selbst. Sobald der fragliche Prozess sein Leben ausgehaucht hat, steht einem umount der CD nichts mehr im Wege.

Läuft's oder läuft´s nicht?

Bei der Konfiguration von Diensten, die durch Daemonen gesteuert werden (zum Beispiel cron), finde ich in der Dokumentation häufig die Aufforderung, zu überprüfen, ob der jeweilige Daemon oder das Programm läuft. Wie stelle ich das schnell und einfach fest?

Dr. Linux: In der /var-Abteilung des Linux-Verzeichnisbaums finden Sie Daten, die sich schnell ändern können, ergo variabel sind. Dazu zählt auch die Information, ob ein bestimmter Daemon läuft. Wird er gestartet, erhält er (wie jeder andere Task auch) eine Prozess-ID, die jedoch anders als bei "normalen" Prozessen in einer Datei namens "name.pid" in /var/run verzeichnet wird. Damit wird verhindert, dass einer der Daemonen doppelt gestartet wird, und beim Herunterfahren des Systems ist sofort ersichtlich, welche Dienste beendet werden müssen.

Finden Sie einen auf einen Daemon passenden Eintrag in /var/run, können Sie im Normalfall davon ausgehen, dass der entsprechende Dienst gestartet ist (Listing 2). Natürlich kann es sein, dass er zum aktuellen Zeitpunkt gar nichts tut und sich nur die Zeit bis zu seinem nächsten Termin vertreibt; das ist abhängig von seiner Aufgabe und der jeweiligen Konfiguration.

Wenn Sie die Prozess-ID benötigen, schauen Sie sich den Inhalt der Datei am besten mit cat an – die Ausgabe beschränkt sich auf nur eine Zahl, so dass der Einsatz eines Pagers wie less zuviel des Guten wäre:

perle@maxi:/var/run> cat cron.pid
599

Der aktuell laufende Cron-Daemon trägt also die PID 599.

Listing 2

Die

.pid

-Dateien in

/var/run

enthalten die PIDs gestarteter Daemonen

perle@maxi:/var/run> ls -l
insgesamt 112
-rw-r--r--    1 root     root            4 Mär  6 09:26 atd.pid
-rw-r--r--    1 root     root            4 Mär  6 09:26 cron.pid
-rw-r—–    1 root     root            4 Mär  6 09:26 gpm.pid
-rw-r--r--    1 root     root            4 Mär  6 09:26 inetd.pid
-rw-r--r--    1 root     root            4 Mär  6 09:26 klogd.pid
-rw-r--r--    1 lp       lp              4 Mär  6 09:26 lpd.printer
-rw-r--r--    1 root     root            4 Mär  6 09:26 nscd.pid
drwxr-x--T    2 root     root         4096 Mär  6 10:18 sendmail
-rw-r--r--    1 root     root           38 Mär  6 10:18 sendmail.pid
drwxr-x—    2 root     dialout      4096 Mär  6 09:26 smpppd
-rw-r--r--    1 root     root            4 Mär  6 09:26 sshd.pid
-rw-r--r--    1 root     root            4 Mär  6 09:26 syslogd.pid
-rw-rw-r--    1 root     tty          3456 Mär  6 10:29 utmp
-rw-r--r--    1 root     root            4 Mär  6 09:26 xfstt.pid
[…]

Eine weitere Möglichkeit, sich von der Lebendigkeit eines Programms zu überzeugen, steht mit dem Befehl pidof (bei SuSE im meist nicht im Benutzer-Pfad enthaltenen Verzeichnis /sbin abgelegt) zur Verfügung, einem Link auf das Programm killall5. Übergeben Sie pidof den Namen des gesuchten Programms, das in diesem Fall nicht einmal ein Daemon sein muss. Läuft es, erhalten Sie als Ausgabe seine PID; wurde es mehrfach gestartet, gibt pidof alle Prozess-Identifikationsnummern aus.

perle@maxi:~>/sbin/pidof /sbin/syslogd
337

Sollte pidof sich nach Ihrer Eingabe ausschweigen, haben Sie es mit einem Skript zu tun (oder mit etwas, das pidof für eines hält, wobei diese Einschätzung nicht stimmen muss). In diesem Fall geben Sie die Option -x mit an:

perle@maxi:~> /sbin/pidof -x kdeinit
1125 929 927 923 921 919 909 895 893 89
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

550 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/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

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Ubuntu 11.10 Compiz 3D Cube flackern
Moritz Obenauer, 12.02.2012 12:25, 0 Antworten
Hallo! Ich habe Ubuntu 11.10 mit Unity und den Compiz 3D Cube ein gerichtet. Er funktioniert...
Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 2 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...