Update to r43021:

Combine "Processes" and "Daemons, Signals, and Killing Processes" into one section entitled "Processes and Daemons"
- introduce daemons and processes in same introductory section
- add headings for viewing processes and for killing processes
- update listings
This commit is contained in:
Bjoern Heidotting 2016-03-01 14:53:59 +00:00
parent e58bdb5594
commit e31be0eec7
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48305

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde$
basiert auf: r42953
basiert auf: r43021
-->
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="basics">
<title>Grundlagen des UNIX Betriebssystems</title>
@ -3002,7 +3002,7 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
</sect1>
<sect1 xml:id="basics-processes">
<title>Prozesse</title>
<title>Prozesse und Dämonen</title>
<para>&os; ist ein Multitasking-Betriebssystem. Jedes
Programm, das zu irgendeiner Zeit läuft wird als
@ -3022,7 +3022,33 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
als Elternprozess besitzt. Die Ausnahme hiervon ist ein
spezieller Prozess namens &man.init.8;, der beim booten immer
als erstes gestartet wird und der immer die
<acronym>PID</acronym> 1 hat.</para>
<acronym>PID</acronym> <literal>1</literal> hat.</para>
<para>Manche Programme erwarten keine Eingaben vom Benutzer und
lösen sich bei erster Gelegenheit von ihrem Terminal. Ein
Webserver zum Beispiel antwortet auf Web-Anfragen und nicht auf
Benutzereingaben. Mail-Server sind ein weiteres Beispiel für
diesen Typ von Anwendungen. Diese Programme sind als
<firstterm>Dämonen</firstterm> bekannt. Der Begriff Dämon
stammt aus der griechischen Mythologie und bezeichnet ein Wesen,
das weder gut noch böse ist und welches unsichtbar nützliche
Aufgaben verrichtet. Deshalb ist das BSD Maskottchen dieser
fröhlich aussehende Dämon mit Turnschuhen und Dreizack.</para>
<para>Programme, die als Dämon laufen, werden entsprechend einer
Konvention mit einem <quote>d</quote> am Ende benannt.
<application>BIND</application> steht beispielsweise für
Berkeley Internet Name Domain, das tatsächlich laufende Programm
heißt aber <command>named</command>. Der
<application>Apache</application> Webserver wird
<command>httpd</command> genannt und der Druckerspool-Dämon
heißt &man.lpd.8;. Dies ist allerdings nur eine Konvention.
Der Dämon der Anwendung <application>Sendmail</application>
heißt beispielsweise <command>sendmail</command> und nicht
<literal>maild</literal>.</para>
<sect2>
<title>Prozesse beobachten</title>
<para>Um die Prozesse auf dem System zu sehen, benutzen Sie
&man.ps.1; und &man.top.1;. Eine statische Liste der laufenden
@ -3037,21 +3063,9 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
Prozesse, die dem Benutzer gehören. Zum Beispiel:</para>
<screen>&prompt.user; <userinput>ps</userinput>
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
72210 p0 R+ 0:00.00 ps
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfish</screen>
PID TT STAT TIME COMMAND
8203 0 Ss 0:00.59 /bin/csh
8895 0 R+ 0:00.00 ps</screen>
<para>Die Ausgabe von &man.ps.1; ist in einer Anzahl von Spalten
organisiert. Die <literal>PID</literal> Spalte zeigt die
@ -3084,20 +3098,25 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
<para>Die Ausgabe von &man.top.1; sieht ähnlich aus:</para>
<screen>&prompt.user; <userinput>top</userinput>
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46
107 processes: 2 running, 104 sleeping, 1 zombie
CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle
Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free
ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other
Swap: 2048M Total, 2048M Free
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...</screen>
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg
8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4
8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox
431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused
9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top
2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4
8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4
8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin
2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd
2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin
1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4</screen>
<para>Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten
fünf Kopfzeilen finden sich die zuletzt zugeteilte
@ -3105,9 +3124,12 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
(engl. <foreignphrase>load average</foreignphrase>), die
Systemlaufzeit (die Zeit seit dem letzten Reboot) und die
momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie
viele Prozesse momentan laufen (im Beispiel 47), wie viel
viele Prozesse momentan laufen, wie viel
Speicher und Swap verbraucht wurde und wie viel Zeit das System
in den verschiedenen CPU-Modi verbringt.</para>
in den verschiedenen CPU-Modi verbringt. Wenn das System mit
dem <acronym>ZFS</acronym>-Dateisystem formatiert wurde, dann
liefert die Zeile <literal>ARC</literal> Informationen, wie
viele Daten aus dem Cache gelesen wurden.</para>
<para>Darunter befinden sich einige Spalten mit ähnlichen
Informationen wie in der Ausgabe von &man.ps.1;,
@ -3116,47 +3138,17 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
hat. &man.top.1; zeigt in zwei Spalten den Speicherverbrauch
des Prozesses an. Die erste Spalte gibt
den gesamten Speicherverbrauch des Prozesses an, in der zweiten
Spalte wird der aktuelle Verbrauch angegeben.
<application>mutt</application> hat im gezeigten Beispiel
insgesamt 8&nbsp;MB Speicher verbraucht. Momentan benutzt
es allerdings nur 5&nbsp;MB.</para>
Spalte wird der aktuelle Verbrauch angegeben.</para>
<para>Die Anzeige wird von &man.top.1; automatisch alle zwei
Sekunden aktualisiert. Ein anderer Intervall kann mit
<option>-s</option> spezifiziert werden.</para>
</sect1>
</sect2>
<sect1 xml:id="basics-daemons">
<title>Dämonen, Signale und Stoppen von Prozessen</title>
<sect2 xml:id="basics-daemons">
<title>Stoppen von Prozessen</title>
<para>Wenn Sie einen Editor benutzen, können Sie ihn leicht
bedienen und Dateien laden, weil der Editor dafür Vorsorge
getroffen hat und auf einem <firstterm>Terminal</firstterm>
läuft. Manche Programme erwarten keine Eingaben von einem
Benutzer und lösen sich bei erster Gelegenheit von ihrem
Terminal. Ein Webserver zum Beispiel antwortet auf
Web-Anfragen und nicht auf Benutzereingaben. Mail-Server sind
ein weiteres Beispiel für diesen Typ von Anwendungen.</para>
<para>Diese Programme sind als <firstterm>Dämonen</firstterm>
bekannt. Der Begriff Dämon stammt aus der griechischen
Mythologie und bezeichnet ein Wesen, das weder gut noch böse ist
und welches unsichtbar nützliche Aufgaben verrichtet. Deshalb
ist das BSD Maskottchen dieser fröhlich aussehende Dämon mit
Turnschuhen und Dreizack.</para>
<para>Programme, die als Dämon laufen, werden entsprechend einer
Konvention mit einem <quote>d</quote> am Ende benannt.
<application>BIND</application> steht beispielsweise für
Berkeley Internet Name Domain, das tatsächlich laufende Programm
heißt aber &man.named.8;. Der <application>Apache</application>
Webserver wird <command>httpd</command> genannt und der
Druckerspool-Dämon heißt &man.lpd.8;. Dies ist allerdings nur
eine Konvention. Der Dämon der Anwendung
<application>Sendmail</application> heißt beispielsweise
&man.sendmail.8; und nicht <literal>maild</literal>.</para>
<para>Eine Möglichkeit mit einem Dämon oder einem laufenden
<para>Eine Möglichkeit mit einem laufenden
Prozess zu kommunizieren, ist über das Versenden von
<firstterm>Signalen</firstterm> mittels &man.kill.1;. Es gibt
eine Reihe von verschiedenen Signalen. Manche haben eine feste
@ -3173,9 +3165,10 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
eine Anwendung schlecht geschrieben ist und auf Speicher
zugreift, auf den sie nicht zugreifen soll, so sendet &os; dem
Prozess das <firstterm>Segmentation Violation</firstterm> Signal
(<literal>SIGSEGV</literal>). Wenn eine Anwendung den &man.alarm.3;
Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu
werden, bekommt sie das Alarm Signal (<literal>SIGALRM</literal>)
(<literal>SIGSEGV</literal>). Wenn eine Anwendung programmiert
wurde, den &man.alarm.3; Systemaufruf zu benutzen, um nach
einiger Zeit benachrichtigt zu werden, bekommt sie das
<quote>Alarm</quote>-Signal (<literal>SIGALRM</literal>)
gesendet.</para>
<para>Zwei Signale können benutzt werden, um einen Prozess zu stoppen:
@ -3188,9 +3181,7 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
Aktion durchführt, die nicht unterbrochen werden darf.</para>
<para><literal>SIGKILL</literal> kann von keinem Prozess ignoriert
werden. Das Signal lässt sich mit <quote>Mich interessiert
nicht, was du gerade machst, hör sofort auf damit!</quote>
umschreiben. Wird einem Prozess <literal>SIGKILL</literal>
werden. Wird einem Prozess <literal>SIGKILL</literal>
geschickt, dann wird &os; diesen sofort beenden<footnote>
<para>Es gibt Fälle, in denen ein Prozess nicht unterbrochen
werden kann. Wenn ein Prozess zum Beispiel eine Datei von
@ -3203,8 +3194,8 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
<para>Andere häufig verwendete Signale sind
<literal>SIGHUP</literal>, <literal>SIGUSR1</literal> und
<literal>SIGUSR2</literal>. Diese Signale sind für allgemeine
Zwecke vorgesehen und verschiedene Anwendungen werden
<literal>SIGUSR2</literal>. Da diese Signale für allgemeine
Zwecke vorgesehen sind, werden verschiedene Anwendungen
unterschiedlich auf diese Signale reagieren.</para>
<para>Ändern Sie beispielsweise die Konfiguration eines
@ -3274,16 +3265,15 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
zu starten. Beachten Sie, dass die unterschiedlichen
Shells eine andere Syntax benutzen, um die Namen der
Signale anzugeben. Anstatt jede Syntax zu
lernen, kann es einfacher sein, <command>/bin/kill
<replaceable>...</replaceable></command> direkt
aufzurufen.</para>
lernen, kann es einfacher sein,
<command>/bin/kill</command> direkt aufzurufen.</para>
</note>
</step>
</procedure>
<para>Beim Versenden von anderen Signalen, ersetzen
Sie <literal>TERM</literal> oder <literal>KILL</literal> in der
Kommandozeile mit dem entsprechenden Signal.</para>
Kommandozeile mit dem Namen des Signals.</para>
<important>
<para>Das zufällige Beenden eines Prozesses kann gravierende
@ -3295,6 +3285,7 @@ Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
<emphasis>immer</emphasis> zweimal <emphasis>bevor</emphasis>
Sie <keycap>Return</keycap> drücken.</para>
</important>
</sect2>
</sect1>
<sect1 xml:id="shells">