Home / LinuxUser / 2007 / 11 / Präzise Kontrolle

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.

Präzise Kontrolle

Anwendungen und Prozesse mit Bordmitteln optimal steuern

01.11.2007 Auf einem typischen Linux-System laufen viele Anwendungen und Dienste gleichzeitig. Mit den richtigen Befehlen verschaffen Sie sich einen Überblick und greifend steuernd ein.

Auf einem typischen Desktop-System laufen rund 100 bis 200 unterschiedliche Prozesse. Selbst ein einfacher Linux-Server mit Apache als Webserver, Postfix als E-Mail-Server und einigen weiteren Diensten startet 50 bis 100 Prozesse. Deren friedliches Miteinander funktioniert nur aufgrund der ausgeklügelten Mechanismen und Algorithmen, mit deren Hilfe der Kernel den Prozessen Ressourcen zuteilt oder entzieht.

Der Linux-Kernel verfügt über einen leistungsfähigen Prozess-Scheduler und eine ausgereifte Speicherverwaltung, um gestarteten Prozessen Rechenzeit und Speicher zuzuteilen. Ein wählbarer IO-Scheduler bringt Zugriffe auf Massenspeicher in eine geeignete Reihenfolge. Ausgefeiltes Ressourcenmanagement regelt den Zugriff auf Hardwarekomponenten.

Am Anfang

Hat das BIOS den Bootloader und der Bootloader den Linux-Kernel gestartet, initialisiert dieser die zu diesem Zeitpunkt wesentliche Hardware und stößt dann den ersten Prozess namens Init an. Der Init-Prozess wiederum startet über ein komplexes System von Skripten weitere Prozesse, um abhängig vom eingestellten Runlevel einen bestimmten Zustand herzustellen [1]. Die Konfiguration dazu findet sich gewöhnlich in der Datei /etc/inittab auf der Festplatte. Der Einsatz der Runlevel variiert von Distribution zu Distribution. Gewöhnlich dokumentiert die Datei inittab die Details.

Üblicherweise stehen die Runlevel 2 bis 5 für verschiedene Mehrbenutzer-Umgebungen mit oder ohne Netzwerk und grafischer Oberfläche. Runlevel 1 bleibt für den Einzelbenutzer-Betrieb reserviert, etwa für Wartungsarbeiten am System. Runlevel 0 dient gewöhnlich dem Anhalten und 6 dem Neustart des Systems.

Jede Zeile besteht aus vier mit Doppelpunkten voneinander getrennten Spalten (Listing 1, Zeile 9 bis 15). Die erste Spalte enthält einen beliebigen Namen für den Eintrag. In Spalte zwei folgen die Runlevel, in denen Init die in Spalte 3 angegebene Aktion ausführt. Bei der Aktion wait startet Init den in Spalte vier angegebenen Befehl und wartet auf dessen Ende.

Listing 1
# The default runlevel.
id:2:initdefault:
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

Bei der Aktion respawn (Listing 1, Zeile 20 bis 25) startet Init den Befehl aus Spalte 4 hingegen immer wieder neu, wenn Sie diesen beenden. Mit der Aktion ctrlaltdel (Zeile 18) geben Sie an, was beim Drücken von [Strg]+[Alt]+[Entf] geschieht – in der Regel ein Neustart des Systems. Das funktioniert jedoch normalerweise nur im Textmodus, da der X-Server die Tastenkombination abfängt.

Die Aktion respawn kommt bei den getty-Prozessen zum Einsatz, die die Textkonsolen bereit stellen. Zwischen diesen schalten Sie üblicherweise mit [Alt]+[F1] bis [Alt]+[F6] um. Die Tastenkombination [Alt]+[F7] ist üblicherweise für X11 basierte grafische Oberfläche reserviert, weitere Sitzungen folgen ab [Alt]+[F8]. Möchten Sie von der grafischen Oberfläche aus wechseln, drücken Sie zusätzlich [Strg].

Jedes Terminal hat ein TTY, dessen Gerätedatei (zum Beispiel /dev/tty1) Sie mit dem Befehl tty ermitteln. Bei einer Shell via SSH oder in einem grafischen Terminal-Client wie Xterm, Konsole von KDE oder Terminal von Gnome kommt ein Pseudoterminal wie /dev/pts/1 zum Einsatz.

Die Zeile mit der Aktion initdefault (Listing 1, Zeile 2) gibt den Standard-Runlevel nach dem Booten an. Dort sollte aus naheliegendem Grund weder der Runlevel 0 (Halt) noch der Runlevel 6 (Reboot) stehen. Für jeden der Runlevel startet Init im Beispiel das Skript /etc/init.d/rc mit dem entsprechenden Runlevel als Argument. Das Skript wiederum stößt über ein System mit symbolischen Verweisen weitere Skripte an, die konkrete Dienste in Gang setzen oder stoppen. Die symbolischen Verweise befinden sich bei Debian-basierten Distributionen in den Verzeichnissen /etc/rc0.d bis /etc/rc6.d sowie /etc/rcS.d und bei Suse in /etc/init.d/rc0.d und /etc/init.d/rc6.d sowie /etc/init.d/rcS.d.

Die Namen der Verweise folgen einem Schema: Ein S als erstes Zeichen deutet darauf hin, dass das entsprechende Init-Skript mit dem Argument start losrennt. Bei einem K hingegen kommt ein stop als Argument zum Einsatz. Die darauf folgende, üblicherweise zweistellige Zahl definiert die Reihenfolge, in der die Skripte starten. Mit ls -l verschaffen Sie sich einen groben Überblick in den Verzeichnissen.

Der Befehl who -r zeigt den aktuellen Runlevel, mit init Runlevel wechseln Sie in einen anderen. Speichern Sie jedoch alle wichtigen Daten ab, bevor Sie das ausprobieren. Alternativ halten Sie das System mit shutdown now oder halt an, mit shutdown -r now oder reboot starten Sie es neu. Statt now akzeptiert der Befehl shutdown auch eine andere Zeitangabe.

Was geht?

Einen Überblick darüber, welcher Prozess welche anderen Prozesse startet, verschaffen Sie sich mit Pstree [2]. Der Befehl zeigt in einer Baumstruktur die Kind-Prozesse von Init an. Viele KDE-Anwendungen hängen zum Beispiel von Kdeinit ab, einem Mechanismus, der die Startzeit von KDE-Anwendungen verkürzt (Abbildung 1). Auch der Linux-Kernel startet eigene Prozesse. Dazu verwendet er die Funktion Kthread, die alle weiteren Aktionen anschiebt.

Abbildung 1: Der Befehl Pstree gibt Ihnen eine Übersicht über Prozesse und Kind-Prozesse.

Jeder Prozess hat eine eindeutige Nummer, die Prozess-ID (PID). Mit pstree -p zeigt das Tool diese Information zusätzlich an. Sie erfahren die Prozess-ID eines bestimmten Prozesses auch über die Befehle pidof oder pgrep. Laufen mehrere Prozesse mit gleichen Namen, liefern beide die Nummern aller Prozesse zurück. Übergeben Sie Pstree eine Prozess-ID als Argument, so baut es die Baumstruktur von diesem Prozess aus auf:

$ pstree $(pidof kdeinit)
$ pstree $(pidof kthread)

Eine Liste aller Prozesse erhalten Sie auch mit dem Befehl ps. Gängige Optionen sind u für die Angabe des Benutzers, mit dessen Rechten ein Prozess läuft, x für die Ausgabe von Prozessen ohne TTYs (in der Regel Prozesse der grafischen Oberfläche) oder a zum Anzeigen der Prozesse anderer Benutzer. Die Option f präsentiert eine Baumstruktur ähnlich wie bei Pstree, mit e erfahren Sie die Umgebungsvariablen jedes Prozesses. Die Kombinationen ps aux und ps ef kommen zum Beispiel sehr häufig zum Einsatz.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

1069 Hits
Wertung: 82 Punkte (18 Stimmen)

Schlecht Gut

Infos zum Autor

Martin Steigerwald

Martin Steigerwald

Martin Steigerwald arbeitet als Trainer, Consultant und Systemadministrator bei der team(ix) GmbH in Nürnberg. Schwerpunkte seiner Tätigkeit sind Linux-Schulungen, die Konzeption, Installation und Wartung solider IT-Infrastruktur auf Basis von Debian Linux sowie Second Level Support für Linux als Business-Desktop bei Kunden von teamix(ix).


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...