White space fix only. Translators can ignore.

This commit is contained in:
Dru Lavigne 2013-10-22 19:39:03 +00:00
parent 0abcd2e1b8
commit f9fcd39326
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=43022

View file

@ -542,7 +542,7 @@ console none unknown off secure</programlisting>
</listitem>
</varlistentry>
</variablelist>
</sect3>
</sect3>
<sect3 id="users-superuser">
<title>The Superuser Account</title>
@ -1305,7 +1305,7 @@ teamtwo:*:1100:jru,db</screen>
<screen>&prompt.user; <userinput>id jru</userinput>
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)</screen>
</example>
</example>
<para>In this example, <username>jru</username> is a member of
the groups <groupname>jru</groupname> and
@ -2879,75 +2879,78 @@ root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
always the first process to start at boot time and which always
has a <acronym>PID</acronym> of <literal>1</literal>.</para>
<para>Some programs are not designed
to be run with continuous user input and disconnect from the
terminal at the first opportunity. For example, a web server
responds to web requests, rather than user input. Mail servers
are another example of this type of application. These types of
programs are known as <firstterm>daemons</firstterm>.
The term daemon comes from Greek mythology and represents an
entity that is neither good nor evil, and which invisibly
performs useful tasks. This is why the BSD mascot is the
cheerful-looking daemon with sneakers and a pitchfork.</para>
<para>Some programs are not designed to be run with continuous
user input and disconnect from the terminal at the first
opportunity. For example, a web server responds to web
requests, rather than user input. Mail servers are another
example of this type of application. These types of programs
are known as <firstterm>daemons</firstterm>. The term daemon
comes from Greek mythology and represents an entity that is
neither good nor evil, and which invisibly performs useful
tasks. This is why the BSD mascot is the cheerful-looking
daemon with sneakers and a pitchfork.</para>
<para>There is a convention to name programs that normally run as
daemons with a trailing <quote>d</quote>. For example,
<application>BIND</application> is the Berkeley Internet Name
Domain, but the actual program that executes is <command>named</command>.
The <application>Apache</application> web server program is
Domain, but the actual program that executes is
<command>named</command>. The
<application>Apache</application> web server program is
<command>httpd</command> and the line printer spooling daemon
is <command>lpd</command>. This is only a naming convention. For example,
the main mail daemon for the <application>Sendmail</application>
application is <command>sendmail</command>, and not
<literal>maild</literal>.</para>
is <command>lpd</command>. This is only a naming convention.
For example, the main mail daemon for the
<application>Sendmail</application> application is
<command>sendmail</command>, and not
<literal>maild</literal>.</para>
<sect2>
<title>Viewing Processes</title>
<para>To see the processes running on the system, use &man.ps.1; or
&man.top.1;. To display a static list of the currently running
processes, their <acronym>PID</acronym>s, how much memory they
are using, and the command they were started with, use
&man.ps.1;. To display all the running processes and update
the display every few seconds in order to interactively see
what the computer is doing, use &man.top.1;.</para>
<para>To see the processes running on the system, use &man.ps.1;
or &man.top.1;. To display a static list of the currently
running processes, their <acronym>PID</acronym>s, how much
memory they are using, and the command they were started with,
use &man.ps.1;. To display all the running processes and
update the display every few seconds in order to interactively
see what the computer is doing, use &man.top.1;.</para>
<para>By default, &man.ps.1; only shows the commands that are
running and owned by the user. For example:</para>
<para>By default, &man.ps.1; only shows the commands that are
running and owned by the user. For example:</para>
<screen>&prompt.user; <userinput>ps</userinput>
<screen>&prompt.user; <userinput>ps</userinput>
PID TT STAT TIME COMMAND
8203 0 Ss 0:00.59 /bin/csh
8895 0 R+ 0:00.00 ps</screen>
<para>The output from &man.ps.1; is organized into a number of
columns. The <literal>PID</literal> column displays the process
ID. <acronym>PID</acronym>s are assigned starting at 1, go up
to 99999, then wrap around back to the beginning. However, a
<acronym>PID</acronym> is not reassigned if it is already in
use. The <literal>TT</literal> column shows the tty the program
is running on and <literal>STAT</literal> shows the program's
state. <literal>TIME</literal> is the amount of time the
program has been running on the CPU. This is usually not the
elapsed time since the program was started, as most programs
spend a lot of time waiting for things to happen before they
need to spend time on the CPU. Finally,
<literal>COMMAND</literal> is the command that was used to start
the program.</para>
<para>The output from &man.ps.1; is organized into a number of
columns. The <literal>PID</literal> column displays the
process ID. <acronym>PID</acronym>s are assigned starting at
1, go up to 99999, then wrap around back to the beginning.
However, a <acronym>PID</acronym> is not reassigned if it is
already in use. The <literal>TT</literal> column shows the
tty the program is running on and <literal>STAT</literal>
shows the program's state. <literal>TIME</literal> is the
amount of time the program has been running on the CPU. This
is usually not the elapsed time since the program was started,
as most programs spend a lot of time waiting for things to
happen before they need to spend time on the CPU. Finally,
<literal>COMMAND</literal> is the command that was used to
start the program.</para>
<para>A number of different options are available to change
the information that is displayed. One of the most useful sets
is <literal>auxww</literal>, where <option>a</option> displays
information about all the running processes of all users,
<option>u</option> displays the username and memory usage of the process' owner,
<option>x</option> displays
information about daemon processes, and <option>ww</option>
causes &man.ps.1; to display the full command line for each
process, rather than truncating it once it gets too long to fit
on the screen.</para>
<para>A number of different options are available to change the
information that is displayed. One of the most useful sets is
<literal>auxww</literal>, where <option>a</option> displays
information about all the running processes of all users,
<option>u</option> displays the username and memory usage of
the process' owner, <option>x</option> displays
information about daemon processes, and <option>ww</option>
causes &man.ps.1; to display the full command line for each
process, rather than truncating it once it gets too long to
fit on the screen.</para>
<para>The output from &man.top.1; is similar:</para>
<para>The output from &man.top.1; is similar:</para>
<screen>&prompt.user; <userinput>top</userinput>
<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
@ -2974,68 +2977,70 @@ Swap: 2048M Total, 2048M Free
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>The output is split into two sections. The header (the
first five or six lines) shows the <acronym>PID</acronym> of the last
process to run, the system load averages (which are a measure
of how busy the system is), the system uptime (time since the
last reboot) and the current time. The other figures in the
header relate to how many processes are running,
how much memory and swap space has been used, and how
much time the system is spending in different CPU states. If
the system has been formatted with the <acronym>ZFS</acronym>
file system, the <literal>ARC</literal> line provides an
indication of how much data was read from the memory cache
instead of from disk.</para>
<para>The output is split into two sections. The header (the
first five or six lines) shows the <acronym>PID</acronym> of
the last process to run, the system load averages (which are a
measure of how busy the system is), the system uptime (time
since the last reboot) and the current time. The other
figures in the header relate to how many processes are
running, how much memory and swap space has been used, and how
much time the system is spending in different CPU states. If
the system has been formatted with the <acronym>ZFS</acronym>
file system, the <literal>ARC</literal> line provides an
indication of how much data was read from the memory cache
instead of from disk.</para>
<para>Below the header is a series of columns containing similar
information to the output from &man.ps.1;, such as the
<acronym>PID</acronym>, username, amount of CPU time, and the
command that started the process. By default, &man.top.1; also
displays the amount of memory space taken by the process.
This is split into two columns: one for total size and one for
resident size. Total size is how much memory the application
has needed and the resident size is how much it is actually
using now.</para>
<para>Below the header is a series of columns containing similar
information to the output from &man.ps.1;, such as the
<acronym>PID</acronym>, username, amount of CPU time, and the
command that started the process. By default, &man.top.1;
also displays the amount of memory space taken by the process.
This is split into two columns: one for total size and one for
resident size. Total size is how much memory the application
has needed and the resident size is how much it is actually
using now.</para>
<para>&man.top.1; automatically updates the display every two
seconds. A different interval can be specified with
<option>-s</option>.</para>
</sect2>
<para>&man.top.1; automatically updates the display every two
seconds. A different interval can be specified with
<option>-s</option>.</para>
</sect2>
<sect2 id="basics-daemons">
<title>Killing Processes</title>
<sect2 id="basics-daemons">
<title>Killing Processes</title>
<para>One way to communicate with any running
process or daemon is to send a <firstterm>signal</firstterm> using
&man.kill.1;. There are a number of different signals; some
have a specific meaning while others are described in the
application's documentation. A user can only send a signal to a
process they own and sending a signal to someone else's process
will result in a permission denied error. The exception is the
<username>root</username> user, who can send signals to anyone's
processes.</para>
<para>One way to communicate with any running process or daemon
is to send a <firstterm>signal</firstterm> using &man.kill.1;.
There are a number of different signals; some have a specific
meaning while others are described in the application's
documentation. A user can only send a signal to a process
they own and sending a signal to someone else's process will
result in a permission denied error. The exception is the
<username>root</username> user, who can send signals to
anyone's processes.</para>
<para>The operating system can also send a signal to a process. If an application
is badly written and tries to access memory that it is not
supposed to, &os; will send the process the
<quote>Segmentation Violation</quote> signal
(<literal>SIGSEGV</literal>). If an application has been written to use the
&man.alarm.3; system call to be alerted after a period of time
has elapsed, it will be sent the <quote>Alarm</quote> signal
(<literal>SIGALRM</literal>).</para>
<para>The operating system can also send a signal to a process.
If an application is badly written and tries to access memory
that it is not supposed to, &os; will send the process the
<quote>Segmentation Violation</quote> signal
(<literal>SIGSEGV</literal>). If an application has been
written to use the &man.alarm.3; system call to be alerted
after a period of time has elapsed, it will be sent the
<quote>Alarm</quote> signal
(<literal>SIGALRM</literal>).</para>
<para>Two signals can be used to stop a process:
<literal>SIGTERM</literal> and <literal>SIGKILL</literal>.
<literal>SIGTERM</literal> is the polite way to kill a process
as the process can read the signal, close any log files it may
have open, and attempt to finish what it is doing before
shutting down. In some cases, a process may ignore
<literal>SIGTERM</literal> if it is in the middle of some task
that can not be interrupted.</para>
<para>Two signals can be used to stop a process:
<literal>SIGTERM</literal> and <literal>SIGKILL</literal>.
<literal>SIGTERM</literal> is the polite way to kill a process
as the process can read the signal, close any log files it may
have open, and attempt to finish what it is doing before
shutting down. In some cases, a process may ignore
<literal>SIGTERM</literal> if it is in the middle of some task
that can not be interrupted.</para>
<para><literal>SIGKILL</literal> can not be ignored by a process.
Sending a <literal>SIGKILL</literal> to a
process will usually stop that process there and then.<footnote>
<para><literal>SIGKILL</literal> can not be ignored by a
process. Sending a <literal>SIGKILL</literal> to a
process will usually stop that process there and then.
<footnote>
<para>There are a few tasks that can not be interrupted. For
example, if the process is trying to read from a file that
is on another computer on the network, and the other
@ -3045,89 +3050,91 @@ Swap: 2048M Total, 2048M Free
out occurs the process will be killed.</para>
</footnote>.</para>
<para>Other commonly used signals are <literal>SIGHUP</literal>,
<literal>SIGUSR1</literal>, and <literal>SIGUSR2</literal>.
Since these are general purpose signals, different applications
will respond differently.</para>
<para>Other commonly used signals are <literal>SIGHUP</literal>,
<literal>SIGUSR1</literal>, and <literal>SIGUSR2</literal>.
Since these are general purpose signals, different
applications will respond differently.</para>
<para>For example, after changing a web server's configuration
file, the web server needs to be told to re-read its
configuration. Restarting <command>httpd</command> would result
in a brief outage period on the web server. Instead, send the
daemon the <literal>SIGHUP</literal> signal. Be aware that
different daemons will have different behavior, so refer to the
documentation for the daemon to determine if
<literal>SIGHUP</literal> will achieve the desired
results.</para>
<para>For example, after changing a web server's configuration
file, the web server needs to be told to re-read its
configuration. Restarting <command>httpd</command> would
result in a brief outage period on the web server. Instead,
send the daemon the <literal>SIGHUP</literal> signal. Be
aware that different daemons will have different behavior, so
refer to the documentation for the daemon to determine if
<literal>SIGHUP</literal> will achieve the desired
results.</para>
<procedure>
<title>Sending a Signal to a Process</title>
<procedure>
<title>Sending a Signal to a Process</title>
<para>This example shows how to send a signal to &man.inetd.8;.
The &man.inetd.8; configuration file is
<filename>/etc/inetd.conf</filename>, and &man.inetd.8; will
re-read this configuration file when it is sent a
<literal>SIGHUP</literal>.</para>
<para>This example shows how to send a signal to
&man.inetd.8;. The &man.inetd.8; configuration file is
<filename>/etc/inetd.conf</filename>, and &man.inetd.8; will
re-read this configuration file when it is sent a
<literal>SIGHUP</literal>.</para>
<step>
<para>Find the <acronym>PID</acronym> of the process to send
the signal to using &man.pgrep.1;. In this example, the
<acronym>PID</acronym> for &man.inetd.8; is 198:</para>
<step>
<para>Find the <acronym>PID</acronym> of the process to send
the signal to using &man.pgrep.1;. In this example, the
<acronym>PID</acronym> for &man.inetd.8; is 198:</para>
<screen>&prompt.user; <userinput>pgrep -l inetd</userinput>
<screen>&prompt.user; <userinput>pgrep -l inetd</userinput>
198 inetd -wW</screen>
</step>
</step>
<step>
<para>Use &man.kill.1; to send the signal. Because
&man.inetd.8; is owned by <username>root</username>, use
&man.su.1; to become <username>root</username> first.</para>
<step>
<para>Use &man.kill.1; to send the signal. Because
&man.inetd.8; is owned by <username>root</username>, use
&man.su.1; to become <username>root</username>
first.</para>
<screen>&prompt.user; <userinput>su</userinput>
<screen>&prompt.user; <userinput>su</userinput>
<prompt>Password:</prompt>
&prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen>
<para>Like most &unix; commands, &man.kill.1; will not print
any output if it is successful. If a signal is sent to a
process not owned by that user, the message
<errorname>kill: <replaceable>PID</replaceable>: Operation
not permitted</errorname> will be displayed. Mistyping
the <acronym>PID</acronym> will either send the signal to
the wrong process, which could have negative results, or
will send the signal to a <acronym>PID</acronym> that is
not currently in use, resulting in the error
<errorname>kill: <replaceable>PID</replaceable>: No such
process</errorname>.</para>
<para>Like most &unix; commands, &man.kill.1; will not print
any output if it is successful. If a signal is sent to a
process not owned by that user, the message
<errorname>kill: <replaceable>PID</replaceable>: Operation
not permitted</errorname> will be displayed. Mistyping
the <acronym>PID</acronym> will either send the signal to
the wrong process, which could have negative results, or
will send the signal to a <acronym>PID</acronym> that is
not currently in use, resulting in the error
<errorname>kill: <replaceable>PID</replaceable>: No such
process</errorname>.</para>
<note>
<title>Why Use <command>/bin/kill</command>?</title>
<note>
<title>Why Use <command>/bin/kill</command>?</title>
<para>Many shells provide <command>kill</command> as a built
in command, meaning that the shell will send the signal
directly, rather than running
<filename>/bin/kill</filename>. Be aware that different
shells have a different syntax for specifying the name of
the signal to send. Rather than try to learn all of them,
it can be simpler to specify <command>/bin/kill</command>.</para>
</note>
</step>
</procedure>
<para>Many shells provide <command>kill</command> as a
built in command, meaning that the shell will send the
signal directly, rather than running
<filename>/bin/kill</filename>. Be aware that different
shells have a different syntax for specifying the name
of the signal to send. Rather than try to learn all of
them, it can be simpler to specify
<command>/bin/kill</command>.</para>
</note>
</step>
</procedure>
<para>When sending other signals, substitute
<literal>TERM</literal> or <literal>KILL</literal> with the name
of the signal.</para>
<para>When sending other signals, substitute
<literal>TERM</literal> or <literal>KILL</literal> with the
name of the signal.</para>
<important>
<para>Killing a random process on the system is a bad idea.
In particular, &man.init.8;, <acronym>PID</acronym> 1, is
special. Running <command>/bin/kill -s KILL 1</command> is
a quick, and unrecommended, way to shutdown the system.
<emphasis>Always</emphasis> double check the arguments to
&man.kill.1; <emphasis>before</emphasis> pressing
<keycap>Return</keycap>.</para>
</important>
</sect2>
<important>
<para>Killing a random process on the system is a bad idea.
In particular, &man.init.8;, <acronym>PID</acronym> 1, is
special. Running <command>/bin/kill -s KILL 1</command> is
a quick, and unrecommended, way to shutdown the system.
<emphasis>Always</emphasis> double check the arguments to
&man.kill.1; <emphasis>before</emphasis> pressing
<keycap>Return</keycap>.</para>
</important>
</sect2>
</sect1>
<sect1 id="shells">