475 lines
8.6 KiB
HTML
475 lines
8.6 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Run levels</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="Linux System Administrators Guide"
|
|
HREF="index.html"><LINK
|
|
REL="UP"
|
|
TITLE="init"
|
|
HREF="init-intro.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Configuring init to start
|
|
getty: the
|
|
/etc/inittab file"
|
|
HREF="config-init.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Special configuration in
|
|
/etc/inittab"
|
|
HREF="inittab.html"></HEAD
|
|
><BODY
|
|
CLASS="SECT1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>Linux System Administrators Guide: </TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="config-init.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
>Chapter 9. <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="inittab.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="SECT1"
|
|
><H1
|
|
CLASS="SECT1"
|
|
><A
|
|
NAME="RUN-LEVELS-INTRO"
|
|
></A
|
|
>9.3. Run levels</H1
|
|
><P
|
|
>A <I
|
|
CLASS="GLOSSTERM"
|
|
>run level</I
|
|
> is a state of
|
|
<B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> and the whole system that defines what
|
|
system services are operating. Run levels are identified by
|
|
numbers. Some system administrators
|
|
use run levels to define which subsystems are working, e.g.,
|
|
whether X is running, whether the network is operational, and
|
|
so on. Others have all subsystems always running or start and
|
|
stop them individually, without changing run levels, since run
|
|
levels are too coarse for controlling their systems. You need
|
|
to decide for yourself, but it might be easiest to follow the
|
|
way your Linux distribution does things.</P
|
|
><P
|
|
>The following table defines how most Linux Distributions
|
|
define the different run levels. However, run-levels 2 through 5
|
|
can be modified to suit your own tastes.</P
|
|
><DIV
|
|
CLASS="TABLE"
|
|
><A
|
|
NAME="RUN-LEVELS-TABLE"
|
|
></A
|
|
><P
|
|
><B
|
|
>Table 9-1. Run level numbers</B
|
|
></P
|
|
><TABLE
|
|
BORDER="1"
|
|
CLASS="CALSTABLE"
|
|
><TBODY
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>0</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Halt the system.</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>1</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Single-user mode (for special
|
|
administration).</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>2</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Local Multiuser with Networking
|
|
but without network service (like NFS)</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>3</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Full Multiuser with Networking
|
|
</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>4</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Not Used
|
|
</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>5</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Full Multiuser with Networking
|
|
and X Windows(GUI)</TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>6</TD
|
|
><TD
|
|
ALIGN="LEFT"
|
|
VALIGN="TOP"
|
|
>Reboot.</TD
|
|
></TR
|
|
></TBODY
|
|
></TABLE
|
|
></DIV
|
|
><P
|
|
>Services that get started at a certain runtime are determined
|
|
by the contents of the various <TT
|
|
CLASS="FILENAME"
|
|
>rcN.d</TT
|
|
> directories.
|
|
Most distributions locate these directories either at
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/init.d/rcN.d</TT
|
|
> or
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/rcN.d</TT
|
|
>. (Replace the N with the run-level
|
|
number.)</P
|
|
><P
|
|
>
|
|
</P
|
|
><P
|
|
>In each run-level you will find a series of if links pointing
|
|
to start-up scripts located in <TT
|
|
CLASS="FILENAME"
|
|
>/etc/init.d</TT
|
|
>.
|
|
The names of these links all start as either K or S, followed by a
|
|
number. If the name of the link starts with an S, then that indicates
|
|
the service will be started when you go into that run level. If the
|
|
name of the link starts with a K, the service will be killed (if
|
|
running).</P
|
|
><P
|
|
>The number following the K or S indicates the order the scripts
|
|
will be run. Here is a sample of what an
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/init.d/rc3.d</TT
|
|
> may look like.
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
><TT
|
|
CLASS="PROMPT"
|
|
>#</TT
|
|
> <TT
|
|
CLASS="USERINPUT"
|
|
><B
|
|
>ls -l /etc/init.d/rc3.d</B
|
|
></TT
|
|
>
|
|
<TT
|
|
CLASS="COMPUTEROUTPUT"
|
|
>lrwxrwxrwx 1 root root 10 2004-11-29 22:09 K12nfsboot -> ../nfsboot
|
|
lrwxrwxrwx 1 root root 6 2005-03-29 13:42 K15xdm -> ../xdm
|
|
lrwxrwxrwx 1 root root 9 2004-11-29 22:08 S01pcmcia -> ../pcmcia
|
|
lrwxrwxrwx 1 root root 9 2004-11-29 22:06 S01random -> ../random
|
|
lrwxrwxrwx 1 root root 11 2005-03-01 11:56 S02firewall -> ../firewall
|
|
lrwxrwxrwx 1 root root 10 2004-11-29 22:34 S05network -> ../network
|
|
lrwxrwxrwx 1 root root 9 2004-11-29 22:07 S06syslog -> ../syslog
|
|
lrwxrwxrwx 1 root root 10 2004-11-29 22:09 S08portmap -> ../portmap
|
|
lrwxrwxrwx 1 root root 9 2004-11-29 22:07 S08resmgr -> ../resmgr
|
|
lrwxrwxrwx 1 root root 6 2004-11-29 22:09 S10nfs -> ../nfs
|
|
lrwxrwxrwx 1 root root 12 2004-11-29 22:40 S12alsasound -> ../alsasound
|
|
lrwxrwxrwx 1 root root 8 2004-11-29 22:09 S12fbset -> ../fbset
|
|
lrwxrwxrwx 1 root root 7 2004-11-29 22:10 S12sshd -> ../sshd
|
|
lrwxrwxrwx 1 root root 8 2005-02-01 09:24 S12xntpd -> ../xntpd
|
|
lrwxrwxrwx 1 root root 7 2004-12-02 20:34 S13cups -> ../cups
|
|
lrwxrwxrwx 1 root root 6 2004-11-29 22:09 S13kbd -> ../kbd
|
|
lrwxrwxrwx 1 root root 13 2004-11-29 22:10 S13powersaved -> ../powersaved
|
|
lrwxrwxrwx 1 root root 9 2004-11-29 22:09 S14hwscan -> ../hwscan
|
|
lrwxrwxrwx 1 root root 7 2004-11-29 22:10 S14nscd -> ../nscd
|
|
lrwxrwxrwx 1 root root 10 2004-11-29 22:10 S14postfix -> ../postfix
|
|
lrwxrwxrwx 1 root root 6 2005-02-04 13:27 S14smb -> ../smb
|
|
lrwxrwxrwx 1 root root 7 2004-11-29 22:10 S15cron -> ../cron
|
|
lrwxrwxrwx 1 root root 8 2004-12-22 20:35 S15smbfs -> ../smbfs</TT
|
|
>
|
|
<TT
|
|
CLASS="PROMPT"
|
|
></TT
|
|
></PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
</P
|
|
><P
|
|
>How run levels start are configured in
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/inittab</TT
|
|
> by lines like the following:
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
>l2:2:wait:/etc/init.d/rc 2</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
The first field is an arbitrary label, the second one means
|
|
that this applies for run level 2. The third field means
|
|
that <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> should run the command in the
|
|
fourth field once, when the run level is entered, and that
|
|
<B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> should wait for it to complete. The
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/init.d/rc</TT
|
|
> command runs whatever
|
|
commands are necessary to start and stop services to enter run
|
|
level 2.</P
|
|
><P
|
|
>The command in the fourth field does all the hard work of
|
|
setting up a run level. It starts services that aren't already
|
|
running, and stops services that shouldn't be running in the
|
|
new run level any more. Exactly what the command is, and how run
|
|
levels are configured, depends on the Linux distribution.</P
|
|
><P
|
|
>When <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> starts, it looks for a line
|
|
in <TT
|
|
CLASS="FILENAME"
|
|
>/etc/inittab</TT
|
|
> that specifies the default
|
|
run level:
|
|
|
|
<TABLE
|
|
BORDER="1"
|
|
BGCOLOR="#E0E0E0"
|
|
WIDTH="100%"
|
|
><TR
|
|
><TD
|
|
><FONT
|
|
COLOR="#000000"
|
|
><PRE
|
|
CLASS="SCREEN"
|
|
>id:2:initdefault:</PRE
|
|
></FONT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
>
|
|
|
|
You can ask <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> to go to a non-default run
|
|
level at startup by giving the kernel a command line argument
|
|
of <TT
|
|
CLASS="LITERAL"
|
|
>single</TT
|
|
> or <TT
|
|
CLASS="LITERAL"
|
|
>emergency</TT
|
|
>.
|
|
Kernel command line arguments can be given via LILO, for example.
|
|
This allows you to choose the single user mode (run level 1).</P
|
|
><P
|
|
>While the system is running, the <B
|
|
CLASS="COMMAND"
|
|
>telinit</B
|
|
>
|
|
command can change the run level. When the run level is
|
|
changed, <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> runs the relevant command from
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/inittab</TT
|
|
>. </P
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="config-init.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="inittab.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Configuring <B
|
|
CLASS="COMMAND"
|
|
>init</B
|
|
> to start
|
|
<B
|
|
CLASS="COMMAND"
|
|
>getty</B
|
|
>: the
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/inittab</TT
|
|
> file</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="init-intro.html"
|
|
ACCESSKEY="U"
|
|
>Up</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Special configuration in
|
|
<TT
|
|
CLASS="FILENAME"
|
|
>/etc/inittab</TT
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |