Linux系统运行级管理.docx_第1页
Linux系统运行级管理.docx_第2页
Linux系统运行级管理.docx_第3页
Linux系统运行级管理.docx_第4页
Linux系统运行级管理.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/os/linuxLinux系统运行级管理运行级的概念来自SystemV运行级别将启动过程分成不同的集合,每个集合包含一组脚本,当init程序切换运行级到对应的级别时相应的脚本就被触发切换运行级可以通过执行init级别号完成。(比如在Linux中runlevel代表reboot所以执行init就会引起系统重新启动) 运行级别的定义每种SystemV都不完全一样只能通过直接读/etc/inittab来确定。 下面是一个标准的Linux的/etc/inittab注意这里解释的内容来自redhat。但是其他的版本也大同小异我们将它分成若干段来解释如同一般情况那样用#开始的行是注释,而非注释行的语法是标号运行级别操作方式命令。 标号是这一行的标签运行级别用于定义这一行应该用于那些级别如果为空就定义为所有级别操作方式,可以是一些确定的字符串代表如何执行后面的命令,而命令则给处在进入这一级别时执行的程序。下面是它的内容: #DefaultrunlevelTherunlevelsusedbyRHSare: #halt(DoNOTsetinitdefaulttothis) #Singleusermode #MultiuserwithoutNFS(Thesameasifyoudonothavenetworking) #Fullmultiusermode #unused #X #reboot(DoNOTsetinitdefaulttothis) # 上面的几行解释了缺省的运行级别定义 停机系统进入这一级别后关机 单用户模式在这个模式中只能从控制台操作计算机网络和终端不启动许多文件 系统也没有连结 多用户模式但关闭了网络服务支持 完全的多用户模式就是我们一般使用的模式 无定义 图形界面模式系统切入这一运行级后自动启动XWindow系统 重新启动 这些级别的定义是任意的然而你最好不要修改它尤其是level和因为许多。 程序都使用init之类的方式实现对系统的控制其他的Linux发行版本可能会更改的定义你需要参考/etc/inittab才能判断到底那个级别是什么意思不过一般来说和总是上面的定义。 下面开始才是真正的内容首先系统必须定义缺省的运行级别 id:initdefault: initdefault关键字决定了缺省的运行级别在这里是也就是在执行了公共的系统启动脚本之后系统将会执行与级别对应的那些行。 #Systeminitialization si:sysinit:/etc/rcd/rcsysinit 这里的sysinit关键字定义了公共的系统初始化脚本在相应于运行级的地方是空,表示适用于所有运行级别注意它将在系统进入任何运行级别以前完成一会我们再研究这个脚本的内容。 l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc l:wait:/etc/rcd/rc 这里开出了六个运行级别的定义运行级就去执行命令/etc/rcd/rc运行级是/etc/rcd/rc诸如此类wait关键字表示系统必须等待此命令执行完才能开始下一步工作。 #Thingstorunineveryrunlevel ud:once:/sbin/update 这又是一个适用于所有级别的命令,update命令实际是去启动updated守护进程以便定期刷新内存中的超级块表Once关键字说明这个项只被执行一次。 #TrapCTRLALTDELETE ca:ctrlaltdel:/sbin/shutdowntrnow ctrlaltdel定义当热启动组合键被触发时系统的行为这里定义所有的运行级别对它的响应都是重新启动(shutdownr)。 pf:powerfail:/sbin/shutdownfh+PowerFailure;SystemShuttingDown pr:powerokwait:/sbin/shutdowncPowerRestored;ShutdownCancelled 这两行定义如何响应ups信息如果系统掉电(powerfail)执行两分钟后关机的指令。如果关机之前电源恢复取消关机操作。 #Rungettysinstandardrunlevels :respawn:/sbin/mingettytty :respawn:/sbin/mingettytty :respawn:/sbin/mingettytty :respawn:/sbin/mingettytty :respawn:/sbin/mingettytty :respawn:/sbin/mingettytty 都是多用户级别为系统开出个虚拟屏幕(就是用Alt+Fn即获得虚拟屏幕)。 respawn关键字表示这个动作在每次进入相应运行级别时都会执行 #Runxdminrunlevel #xdmisnowaseparateservice x:respawn:/etc/X/prefdmnodaemon 对于级别启动图形界面 归纳一下系统在读入inittab以后要做什么?设置Ctrl+Alt+Del响应设置好对UPS的支持,然后应该执行/etc/rcd/rcsysinit,然后是/etc/rcd/rc最后是update和启动虚拟屏幕显然系统的主要初始化命令应该在/etc/rcd/rcsysinit和/etc/rcd/rc中完成rcd下的基本脚本。 下面我们来研究启动脚本这里的脚本来自redhat因为这是个最为广泛使用的: 版本其他的版本的特有问题将在下一节讨论 首先系统将执行/etc/rcd/rcsysinit这是个shell脚本你可以用普通的文本编。 辑工具对它进行处理为了简便我们只研究其中较为重要的部分或者较为典型的段落。 #!/bin/sh # #/etc/rcd/rcsysinitrunonceatboottime # #TakeninpartfromMiquelvanSmoorenburg&#;sbcheckrc # #Rerunourselvesthroughinitlog ifz$IN_INITLOG;then f/sbin/initlog&exec/sbin/initlog$INITLOG_ARGSr/etc/rcd/rc sysinit fi 首先确定系统中是否存在/sbin/initlog文件如果存在那么需要记录初始化信息, #Setthepath PATH=/bin:/sbin:/usr/bin:/usr/sbin exportPATH 设置缺省路径 #Readinconfigdata iff/etc/sysconfig/network;then /etc/sysconfig/network else NETWORKING=no HOSTNAME=localhost fi 这一段是网络的参数设置/etc/sysconfig/network的内容是这样: NETWORKING=yes FORWARD_IPV=yes HOSTNAME=openlabasnceducn GATEWAY= GATEWAYDEV= 显然如果这个文件存在那么设置网络的运行参数如域名网关等等这个文件中可以包含很多的东西详细的内容我们在设置网络的部分介绍。 #Sourcefunctions /etc/rcd/initd/functions /etc/rcd/initd是所有的服务脚本存放的地方而functions是各种服务脚本需要的。 一些参数的设置有兴趣的话你可以看一看不看也不影响什么,以下有一段是设置一些显示信息接下来是这样的内容: #Mount/proc(doneheresovolumelabelscanworkwithfsck) actionMountingprocfilesystemmountntproc/proc/proc 连结/proc文件系统应该记得/proc是用来显示系统状态的虚拟文件系统,注意action命令的语法它显示一段提示信息然后去执行相应的命令。 然后的段落有一点意思, #Turnoffsysrq #if$MAGIC_SYSRQ=no;then #echo/proc/sys/kernel/sysrq #fi $MAGIC_SYSRQ=no意味着你决定不使用内核调试脚本必须把系统的内核调试功能关闭。 注意接下来的处理方法在/proc/sys/kernel下建立一个名叫sysrq的文件并且设置。 其内容为就关闭了这项功能这也是在运行中打开或者关闭内核的某个功能的标准。 方法以后我们会经常看到这样的例子: 接下来要设置时钟和键盘映射表装入系统字体又是一段冗长的代码,这里将它省略反正你总可以在自己的系统上看到他们。 #Startupswapping actionActivatingswappartitionsswapona swapona将读/etc/fstab文件这个文件中包含有系统中存在的应该自动挂接的各种文件系统的列表,同时也包含了关于交换分区的知识swapona将启动其中标注的所有交换分区。 #Setthehostname actionSettinghostname$HOSTNAMEhostname$HOSTNAME #SettheNISdomainname ifn$NISDOMAIN;then actionSettingNISdomainname$NISDOMAINdomainname$NISDOMAIN else domainname fi 这两段设置系统名字我们应该记得$HOSTNAME已经在/etc/sysconfig/network文件中。 设置过所以这里的action被执行而$NISDOMAIN现在是空字符串所以执行后hostname被设置而NIS域名不存在。 iff/fsckoptions;then fsckoptions=cat/fsckoptions else fsckoptions= fi iff/forcefsck;then fsckoptions=f$fsckoptions fi 这里是与管理员相关的行了如果系统的/下将存在/forcefsck文件于是系统自动启动fsck程序去检查文件系统是否有错误,接下来是一段关于是否存在/fastboot文件的判断与其大同小异,然后系统将会决定是否启用PNP方法和处理MAGIC_SYSRQ是类似的, 这两段我们不讨论了你可以自己看一下: #Remounttherootfilesystemreadwrite actionRemountingrootfilesysteminreadwritemodemountnoremount rw/ #Add/procto/etc/mtab mountftproc/proc/proc 检测根文件系统完毕后系统重新将/连结成读写方式并且将/proc加入到/etc/mtab中,下面是非常重要的一步如果系统内核支持可装载模块需要把$USEMODULES变量。 设置成y并且设置模块的缺省路径参数等等然后系统开始装入模块: #loadsoundmodules ifn$USEMODULES;then ifgrepsqaliassound/etc/confmodules;then actionLoadingsoundmodulemodprobesound fi fi 当这些直接装入的模块结束后,为了和以前的方式兼容也为了管理员的方便,这个脚本试图去寻找/etc/rcd/rcmodules如果存在就执行它。 #Loadmodules(forbackwardcompatibilitywithVARs) iff/etc/rcd/rcmodules;then /etc/rcd/rcmodules fi 显然你可以将自己的模块初始化命令加入/etc/rcd/rcmodules,使它在启动时得到运行,完成主要模块的装入后系统将开始一系列日常工作,如检测有问题的文件系统连结所有本地文件系统启动磁盘限额等等。如果系统还没有被配置,那么将启动配置脚本设置网络超级用户口令等等。否则对于已经配置好的系统清理记账文件准备进行系统工作,当一切都完成之后系统按照inittab的设定进入运行级执行/etc/rcd/rc/etc/rcd/rc是一个很有意思的程序它是一个shell脚本其行为是这样根据提供。给它的参数它去寻找相应的目录rc$argd例如在/etc/rcd/rc执行时它去,查询/etc/rcd/rcd下的所有文件试图执行那些所有用S或K打头的脚本凡是用S开头的脚本它给加上一个start参数。凡是用K打头的脚本加上一个stop参数执行次序是按照S或K后跟的数值顺序。 例如在现在的例子中/etc/rcd/rc下存在一个Sinet的脚本于是rc脚本去执行Sinetstart而Sinet其实是到/etc/rcd/initd/inet的一个符号连结其内容是(这里只给出了部分内容) /etc/rcd/initd/functions /etc/sysconfig/network if$NETWORKING=no then exit fi f/usr/sbin/inetd|exit RETVAL= #Seehowwewerecalled case$in start) echonStartingINETservices: daemoninetd RETVAL=$? echo $RETVALeq&touch/var/lock/subsys/inet ; stop) echonStoppingINETservices: killprocinetd RETVAL=$? echo $RETVALeq&rmf/var/lock/subsys/inet ; *) echoUsage:inetstart|stop|status|restart|reload exit esac exit$REVAL daemon和killproc是在/etc/rcd/initd/functions里面定义的函数daemon将命令当成守护进程执行killproc则杀掉对应进程显然Sinetstart的结果是inetd程序被启动为一个守护进程。 这里的方法是启动服务进程的标准模式例如你要设置某个服务在runlevel被启动,那么你可以自己写一个脚本比如说mydaemon让mydaemonstart启动服务mydaemonstop停止服务然后将这个脚本复制到/etc/rcd/i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论