⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc.html

📁 lfs3.1 从源代码构建linux。html版本。
💻 HTML
字号:
<HTML><HEAD><TITLE>Creating the rc script</TITLE><METANAME="GENERATOR"CONTENT="Modular DocBook HTML Stylesheet Version 1.63"><LINKREL="HOME"TITLE="Linux From Scratch"HREF="../index.html"><LINKREL="UP"TITLE="Creating system boot scripts"HREF="../chapter07/chapter07.html"><LINKREL="PREVIOUS"TITLE="Creating directories"HREF="../chapter07/createdirs.html"><LINKREL="NEXT"TITLE="Creating the rcS script"HREF="../chapter07/rcs.html"></HEAD><BODYCLASS="sect1"BGCOLOR="#FFFFFF"TEXT="#000000"LINK="#0000FF"VLINK="#840084"ALINK="#0000FF"><DIVCLASS="NAVHEADER"><TABLEWIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><THCOLSPAN="3"ALIGN="center">Linux From Scratch: Version 3.1</TH></TR><TR><TDWIDTH="10%"ALIGN="left"VALIGN="bottom"><AHREF="../chapter07/createdirs.html">Prev</A></TD><TDWIDTH="80%"ALIGN="center"VALIGN="bottom">Chapter 7. Creating system boot scripts</TD><TDWIDTH="10%"ALIGN="right"VALIGN="bottom"><AHREF="../chapter07/rcs.html">Next</A></TD></TR></TABLE><HRALIGN="LEFT"WIDTH="100%"></DIV><DIVCLASS="sect1"><H1CLASS="sect1"><ANAME="ch07-rc">7.4. Creating the rc script</A></H1><P>The first main boot script is the <TTCLASS="filename">/etc/init.d/rc</TT> script. Create the <TTCLASS="filename">/etc/init.d/rc</TT> script by running thefollowing command:</P><P><TABLEBORDER="0"BGCOLOR="#E0E0E0"WIDTH="100%"><TR><TD><FONTCOLOR="#000000"><PRECLASS="screen"><TTCLASS="userinput"><B>cat &#62; /etc/init.d/rc &#60;&#60; "EOF"</B></TT>#!/bin/sh# Begin /etc/init.d/rc## By Jason Pearce  - jason.pearce@linux.org# Modified by Gerard Beekmans - gerard@linuxfromscratch.org# print_error_msg based on ideas by Simon Perreault -# nomis80@videotron.ca### Include the functions declared in the /etc/init.d/functions file#source /etc/init.d/functions## The print_error_msg function prints an error message when an unforeseen# error occurred that wasn't trapped for some reason by a evaluate_retval# call or error checking in different ways.print_error_msg(){        echo        $FAILURE        echo -n "You should not read this error message. It means "        echo "that an unforeseen error "        echo -n "took place and subscript $i exited with "        echo "a return value "        echo -n "of $error_value for an unknown reason. If you're able "        echo "to trace this error down "        echo -n "to a bug in one of the files provided by this book, "        echo "please be so kind to "        echo -n "inform us at lfs-dev@linuxfromscratch.org"        $NORMAL        echo        echo        echo "Press a key to continue..."        read}## If you uncomment the debug variable below none of the scripts will be# executed, just the script name and parameters will be echo'ed to the# screen so you can see how the scripts are called by rc.## Un-comment the following for debugging.# debug=echo## Start script or program.# startup() {        $debug "$@"}   ## Ignore CTRL-C only in this shell, so we can interrupt subprocesses.#trap ":" INT QUIT TSTP## Now find out what the current and what the previous runlevel are. The# $RUNLEVEL variable is set by init for all it's children. This script# runs as a child of init.#runlevel=$RUNLEVEL## Get first argument. Set new runlevel to this argument. If no runlevel# was passed to this script we won't change runlevels.#[ "$1" != "" ] &#38;&#38; runlevel=$1if [ "$runlevel" = "" ]then        echo "Usage: $0 &#60;runlevel&#62;" &#62;&#38;2        exit 1fi## The same goes for $PREVLEVEL (see above for $RUNLEVEL). previous will# be set to the previous run level. If $PREVLEVEL is not set it means# that there is no previous runlevel and we'll set previous to N.#previous=$PREVLEVEL[ "$previous" = "" ] &#38;&#38; previous=Nexport runlevel previous## Is there an rc directory for the new runlevel?#if [ -d /etc/rc$runlevel.d ]then## If so, first collect all the K* scripts in the new run level.#        if [ $previous != N ]        then                for i in /etc/rc$runlevel.d/K*                do                [ ! -f $i ] &#38;&#38; continue## the suffix variable will contain the script name without the leading# Kxxx#                        suffix=${i#/etc/rc$runlevel.d/K[0-9][0-9][0-9]}## If there is a start script for this K script in the previous runlevel# determine what it's full path is#            previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix## If there was no previous run level it could be that something was# started in rcS.d (sysinit level) so we'll determine the path for that# possibility as well.#                        sysinit_start=/etc/rcS.d/S[0-9][0-9][0-9]$suffix## Stop the service if there is a start script in the previous run level # or in the sysinit level. If previous_start or sysinit_start do not # exist the 'continue' command is run which causes the script to abort# this iteration of the for loop and continue with the next iteration.# This boils down to that it won't run the commands after the next two# lines and start over from the top of this for loop. See man bash for# more info on this.#                        [ ! -f $previous_start ] &#38;&#38;                        [ ! -f $sysinit_start ] &#38;&#38; continue## If we found previous_start or sysinit_start, run the K script#                        startup $i stop                        error_value=$?## If the return value of the script is not 0, something went wrong with# error checking inside the script. the print_error_msg function will be# called and the message plus the return value of the K script will be# printed to the screen#                        if [ $error_value != 0 ]                        then                                print_error_msg                         fi                done        fi## Now run the START scripts for this runlevel.#        for i in /etc/rc$runlevel.d/S*        do                [ ! -f $i ] &#38;&#38; continue                if [ $previous != N ]        then## Find start script in previous runlevel and stop script in this# runlevel.#                        suffix=${i#/etc/rc$runlevel.d/S[0-9][0-9][0-9]}                        stop=/etc/rc$runlevel.d/K[0-9][0-9][0-9]$suffix                previous_start=/etc/rc$previous.d/S[0-9][0-9][0-9]$suffix## If there is a start script in the previous level and no stop script in # this level, we don't have to re-start the service; abort this# iteration and start the next one.#                        [ -f $previous_start ] &#38;&#38; [ ! -f $stop ] &#38;&#38;                         continue                fi                case "$runlevel" in                        0|6)## levels 0 and 6 are halt and reboot levels. We don't really start# anything here so we call with the 'stop' parameter#                                startup $i stop                                error_value=$?## If the return value of the script is not 0, something went wrong with# error checking inside the script. the print_error_msg function will be# called and the message plus the return value of the K script will be# printed to the screen#                                if [ $error_value != 0 ]                                then                                        print_error_msg                                fi                                ;;                        *)                                startup $i start                                error_value=$?## If the return value of the script is not 0, something went wrong with# error checking inside the script. the print_error_msg function will be# called and the message plus the return value of the K script will be# printed to the screen#                                if [ $error_value != 0 ]                                then                                        print_error_msg                                fi                                ;;                esac        donefi# End /etc/init.d/rc<TTCLASS="userinput"><B>EOF</B></TT></PRE></FONT></TD></TR></TABLE></P></DIV><DIVCLASS="NAVFOOTER"><HRALIGN="LEFT"WIDTH="100%"><TABLEWIDTH="100%"BORDER="0"CELLPADDING="0"CELLSPACING="0"><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top"><AHREF="../chapter07/createdirs.html">Prev</A></TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="../index.html">Home</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top"><AHREF="../chapter07/rcs.html">Next</A></TD></TR><TR><TDWIDTH="33%"ALIGN="left"VALIGN="top">Creating directories</TD><TDWIDTH="34%"ALIGN="center"VALIGN="top"><AHREF="../chapter07/chapter07.html">Up</A></TD><TDWIDTH="33%"ALIGN="right"VALIGN="top">Creating the rcS script</TD></TR></TABLE></DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -