`
bd2007
  • 浏览: 385616 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

linux开机启动脚本的顺序

阅读更多

   




下开机自动启动脚本所涉及的知识和方法、如下:</span>


<span>、相关基础知识点</span>


1</span>
<span>)<span lang="EN-US">redhat</span>
的启动方式和执行次序是: </span>


</span>
<span>加载内核 </span>


</span>
<span>执行<span lang="EN-US">init</span>
程序 </span>


/etc/rc.d/rc.sysinit # </span>
<span>由<span lang="EN-US">init</span>
执行的第一个脚本 </span>


/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL</span>
<span>为缺省的运行模式 </span>


/etc/rc.d/rc.local<span>???? </span>
#</span>
<span>相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)</span>


/sbin/mingetty # </span>
<span>等待用户登录 </span>


</span>


</span>
<span>在<span lang="EN-US">Redhat</span>
中,<span lang="EN-US">/etc/rc.d/rc.sysinit</span>
主要做在各个运行模式中相同的初始化工作,包括:
</span>


</span>
<span>调入<span lang="EN-US">keymap</span>
以及系统字体 </span>


</span>
<span>启动<span lang="EN-US">swapping </span>
</span>


</span>
<span>设置主机名 </span>


</span>
<span>设置<span lang="EN-US">NIS</span>
域名 </span>


</span>
<span>检查(<span lang="EN-US">fsck</span>
)并<span lang="EN-US">mount</span>
文件系统 </span>


</span>
<span>打开<span lang="EN-US">quota </span>
</span>


</span>
<span>装载声卡模块
</span>


</span>
<span>设置系统时钟
</span>


</span>
<span>等等。 </span>


/etc/rc.d/rc</span>
<span>则根据其参数指定的运行模式<span lang="EN-US">(</span>
运行级别,你在<span lang="EN-US">inittab</span>
文件中可以设置<span lang="EN-US">)</span>
来执行相应目录下的脚本。凡是以<span lang="EN-US">Kxx</span>
开头的 </span>


</span>
<span>,都以<span lang="EN-US">stop</span>
为参数来调用;凡是以<span lang="EN-US">Sxx</span>
开头的,都以<span lang="EN-US">start</span>
为参数来调用。调用的顺序按<span lang="EN-US">xx </span>
</span>


</span>
<span>从小到大来执行。<span lang="EN-US">(</span>
其中<span lang="EN-US">xx</span>
是数字、表示的是启动顺序<span lang="EN-US">)</span>
例如,假设缺省的运行模式是<span lang="EN-US">3</span>
,<span lang="EN-US">/etc/rc.d/rc</span>
就会按上述方式调用 </span>


/etc/rc.d/rc3.d/</span>
<span>下的脚本。 </span>


</span>
<span>值得一提的是,<span lang="EN-US">Redhat</span>
中的运行模式<span lang="EN-US">2</span>
、<span lang="EN-US">3</span>
、<span lang="EN-US">5</span>
都把<span lang="EN-US">/etc/rc.d/rc.local</span>
做为初始化脚本中 </span>


</span>
<span>的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。
</span>


</span>


init</span>
<span>在等待<span lang="EN-US">/etc/rc.d/rc</span>
执行完毕之后(因为在<span lang="EN-US">/etc/inittab</span>
中<span lang="EN-US">/etc/rc.d/rc</span>
的 </span>


action</span>
<span>是<span lang="EN-US">wait</span>
),将在指定的各个虚拟终端上运行<span lang="EN-US">/sbin/mingetty</span>
,等待用户的登录。
</span>


</span>
<span>至此,<span lang="EN-US">LINUX</span>
的启动结束。</span>


2</span>
<span>)<span lang="EN-US">init</span>
运行级别及指令</span>


</span>
<span>一、什么是<span lang="EN-US">INIT: </span>
</span>


是<span lang="EN-US">Linux</span>
系统操作中不可缺少的程序之一。 </span>


进程,它是一个由内核启动的用户级进程。
</span>


的方式,完成引导进程。所以<span lang="EN-US">,init</span>
始终是第一个进程(其进程编号始终为<span lang="EN-US">1</span>
)。 </span>


的几个地方查找它,它的正确位置(对<span lang="EN-US">Linux</span>
系统来说)是<span lang="EN-US">/sbin/init</span>
。如果内核找不到<span lang="EN-US">init</span>
,它就会试着运行<span lang="EN-US">/bin/sh</span>
,如果运行失败,系统的启动也会失败。
</span>






到<span lang="EN-US">6 </span>
,具有不同的功能。 </span>




停机(千万不能把<span lang="EN-US">initdefault </span>
设置为<span lang="EN-US">0 </span>
) </span>


单用户模式<span lang="EN-US"><span>????????????????????????????????????
</span>
# s<span>?? </span>
init s = init 1</span>
</span>


多用户,没有<span lang="EN-US"> NFS </span>
</span>


完全多用户模式<span lang="EN-US">(</span>
标准的运行级<span lang="EN-US">) </span>
</span>


没有用到 </span>


多用户图形模式(<span lang="EN-US">xwindow) </span>
</span>


重新启动 (千万不要把<span lang="EN-US">initdefault </span>
设置为<span lang="EN-US">6 </span>
) </span>




文件里指定。这个文件是<span lang="EN-US">init </span>
程序寻找的主要文件,最先运行的服务是放在<span lang="EN-US">/etc/rc.d</span>
</span>


发行版本中,启动脚本都是位于<span lang="EN-US"> /etc/rc.d/init.d</span>
中的。这些脚本被用<span lang="EN-US">ln </span>
命令连接到</span>


<span>目录。<span lang="EN-US">(</span>
这里的<span lang="EN-US">n </span>
就是运行级<span lang="EN-US">0-6) </span>
</span>


3</span>
<span>):<span lang="EN-US">chkconfig </span>
命令(<span lang="EN-US">redhat </span>
操作系统下)</span>


</span>


或者<span lang="EN-US"> Windows</span>
,<span lang="EN-US">Linux </span>
可以有多种运行级。常见的就是多用户的<span lang="EN-US">2,3,4,5 </span>
,很多人知道<span lang="EN-US"> 5 </span>
是运行<span lang="EN-US">
X-Windows</span>
</span>


就<span lang="EN-US"><span>????? </span>
</span>
是关机了。运行级的改变可以通过<span lang="EN-US"> init </span>
命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用</span>


<span>来切换。在<span lang="EN-US"><span>??????
</span>
Linux </span>
的运行级的切换过程中,系统会自动寻找对应运行级的目录<span lang="EN-US">/etc/rc[0-6].d</span>
下的<span lang="EN-US">K </span>
和</span>


<span>开头的文件,按后面的数字顺序,执行这<span lang="EN-US"><span>????? </span>
</span>
些脚本。对这些脚本的维护,是很繁琐的一件事情,<span lang="EN-US">Linux </span>
提供了<span lang="EN-US">chkconfig</span>
</span>




</span>
<span>语法为: </span>


</span>


chkconfig --list [name] </span>


chkconfig --add name </span>


chkconfig --del name </span>


chkconfig [--level levels] name </span>


chkconfig [--level levels] name </span>


</span>


chkconfig </span>
<span>有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。
</span>


</span>


chkconfig </span>
<span>没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回<span lang="EN-US"> true</span>
,否则返回<span lang="EN-US"><span>????? </span>
false</span>
。<span lang="EN-US"> --level </span>
选项可以指定要查看的运行级而不一定是当前运行级。
</span>


</span>


</span>
<span>如果在服务名后面指定了<span lang="EN-US">on</span>
,<span lang="EN-US">off </span>
或者<span lang="EN-US"> reset</span>
,那么<span lang="EN-US"> chkconfig </span>
会改变指定服务的启动信息。<span lang="EN-US">on </span>
和<span lang="EN-US"> off </span>
分别指服务在改变运行级时的<span lang="EN-US"><span>????? </span>
</span>
启动和停止。<span lang="EN-US">reset </span>
指初始化服务信息,无论有问题的初始化脚本指定了什么。
</span>


</span>


</span>
<span>对于<span lang="EN-US"> on </span>
和<span lang="EN-US"> off </span>
开关,系统默认只对运行级<span lang="EN-US"> 3</span>
,<span lang="EN-US">4</span>
,<span lang="EN-US"> 5</span>
有效,但是<span lang="EN-US"> reset </span>
可以对所有运行级有效。指定<span lang="EN-US"> --level </span>
选项时,可以选择特<span lang="EN-US"><span>?????? </span>
</span>
定的运行级。 </span>


</span>


</span>
<span>需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,<span lang="EN-US">init </span>
不会重新启动已经启动的服务,也不会再<span lang="EN-US"><span>????? </span>
</span>
次去停止已经停止的服务。 </span>


</span>


</span>
<span>选项介绍: </span>


</span>


--level levels </span>


</span>
<span>指定运行级,由数字<span lang="EN-US"> 0 </span>
到<span lang="EN-US"> 7 </span>
构成的字符串,如: </span>


</span>


--level 35 </span>
<span>表示指定运行级<span lang="EN-US">3 </span>
和<span lang="EN-US">5</span>
。 </span>


</span>
<span>要在运行级别<span lang="EN-US">3</span>
、<span lang="EN-US">4</span>
、<span lang="EN-US">5</span>
中停运<span lang="EN-US"> nfs </span>
服务,使用下面的命令:<span lang="EN-US">chkconfig --level 345 nfs
off</span>
</span>


</span>


--add name </span>


</span>
<span>这个选项增加一项新的服务,<span lang="EN-US">chkconfig </span>
确保每个运行级有一项 启动<span lang="EN-US">(S) </span>
或者 杀死<span lang="EN-US">(K) </span>
入口。如有缺少,则会从缺省的<span lang="EN-US">init </span>
脚本自动<span lang="EN-US"><span>????? </span>
</span>
建立。 </span>


</span>


--del name </span>


</span>
<span>用来删除服务,并把相关符号连接从<span lang="EN-US"> /etc/rc[0-6].d </span>
删除。 </span>


</span>


--list name </span>


</span>
<span>列表,如果指定了<span lang="EN-US">name </span>
那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。 </span>


</span>


</span>
<span>运行级文件 </span>


</span>


</span>
<span>每个被<span lang="EN-US">chkconfig </span>
管理的服务需要在对应的<span lang="EN-US">init.d </span>
下的脚本加上两行或者更多行的注释。
</span>


</span>
<span>第一行告诉<span lang="EN-US"> chkconfig </span>
缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用<span lang="EN-US"> - </span>
代替运行级。 </span>


</span>
<span>第二行对服务进行描述,可以用
跨行注释。 </span>


</span>


</span>
<span>例如,<span lang="EN-US">random.init </span>
包含三行: </span>


# chkconfig: 2345 20 80 </span>


# description: Saves and restores system
entropy pool for </span>


# higher quality random number generation.
</span>


</span>
<span>表明<span lang="EN-US"> random </span>
脚本应该在运行级<span lang="EN-US"> 2, 3, 4, 5 </span>
启动,启动优先权为<span lang="EN-US">20</span>
,停止优先权为<span lang="EN-US"> 80</span>
。 </span>


</span>


</span>
<span>好了,介绍就到这里了,去看看自己目录下的<span lang="EN-US">/etc/rc.d/init.d </span>
下的脚本吧。<span lang="EN-US"><span>? </span>
</span>
</span>


</span>


</span>
<span>设置自启动服务<span lang="EN-US">:chkconfig --level 345 nfs on</span>
</span>


</span>


<span>实例介绍:</span>


</span>


<span>、在<span lang="EN-US">linux</span>
下安装了<span lang="EN-US">apache </span>
服务(通过下载二进制文件经济编译安装、而非<span lang="EN-US">rpm</span>
包)、<span lang="EN-US">apache </span>
服务启动命令:<span lang="EN-US"><span>?????????? </span>
</span>
</span>


</span>
<span>。让<span lang="EN-US">apache</span>
服务运行在运行级别<span lang="EN-US">3</span>
下面。<span lang="EN-US"><span>? </span>
</span>
命令如下:</span>


</span>


1</span>
<span>)<span lang="EN-US">touch /etc/rc.d/init.d/apache</span>
</span>


vi /etc/rc.d/init.d/apache</span>


chown -R root /etc/rc.d/init.d/apache</span>


chmod 700 /etc/rc.d/init.d/apache</span>


</span>

ln -s /etc/rc.d/init.d/apache
/etc/rc.d/rc3.d/S60apache <span>??</span>
#S</span>


的简写、代表启动、<span lang="EN-US">K</span>
是<span lang="EN-US">kill</span>
的简写、代表关闭。<span lang="EN-US">60</span>
数字<span lang="EN-US"><span>?????? </span>
</span>
</span>


系统而言、许多服务都是建立在数据库启动的前提下才能够正常启动的、可以通过该数字就行调整脚本的<span lang="EN-US"><span>????? </span>
</span>
</span>




</span>


apache</span>
<span>的内容:</span>


#!/bin/bash</span>


#Start httpd service</span>


/server/apache/bin/apachectl start</span>


</span>


</span>
<span>至此<span lang="EN-US"> apache</span>
服务就可以在运行级别<span lang="EN-US">3</span>
下 随机自动启动了。(可以结合<span lang="EN-US">chkconfig </span>
对启动服务进行相应的调整)。</span>


所以以下启动顺序仅供参考</span>

Redhat Redflag centos fc
linux</span>
系统里面脚本的启动</span>






进行启动<span lang="EN-US"> vmlinuz</span>
</span>


</span>






<span>里面的脚本)</span>




登录界面<span lang="EN-US"> login</span>
</span>


在用户登录的时候执行<span lang="EN-US">sh</span>
脚本的顺序:每次登录的时候都会完全执行的</span>













 
0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics