免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: los
打印 上一主题 下一主题

急:linux下/etc下有数个rc目录,这些目录是做什么用的? [复制链接]

论坛徽章:
0
1 [报告]
发表于 2007-02-02 17:03 |显示全部楼层
服务器发行版采用System V风格,此风格是一些linux发行商所喜欢并采用它能最大限度并简单的管理任务,System V风格具备很强的伸缩性和方便性。System V使用多种运行级别并且让各种不同的系统服务启动脚本分别放在相应的运行级别上,当然每种服务的启动脚本可以链接到一种或多种运行级别上。这种设计能最大限度的迎合管理员以便管理员方便的管理并创建自定义的配置。
发行版自带的系统服务启动脚本都是发行商会写好的。
System V定义了7个运行级别0-6,和一个保留的“S”运行级别。
0- 停止
1- 单用户维护级别
6- 重启级别
S- 单用户只挂载根分区系统修复级别
单用户模式在不同的发行版下有不同的含义,比如红帽,Runlevel-S和Runelvel-1是相同的。Runlevel-S在System V下只是挂载根文件系统不会启动任何系统服务以便管理员执行系统检查和修复工作,Runlevel-1是单用户模式一般进行系统维护、软件的安装/删除、配置,在runlevel-1下会启动一些很基本的服务但是网络是绝对关闭的,运行级2,3,4和5是自定义的,比如红帽,Runlevel-5是启动图形界面的,Runlevel-2是进入没有NFS的多用户模式。SuSE的版本在这些运行级上稍有不同。

=====Redhat====
# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
===============
=====SuSE======
Copyright (c) 1996-2002 SuSE Linux AG, Nuernberg, Germany.  All rights reserved.
# /etc/init.d/rc takes care of runlevel handling
# runlevel 0  is  System halt   (Do not use this for initdefault!)
# runlevel 1  is  Single user mode
# runlevel 2  is  Local multiuser without remote network (e.g. NFS)
# runlevel 3  is  Full multiuser with network
# runlevel 4  is  Not used
# runlevel 5  is  Full multiuser with network and xdm
# runlevel 6  is  System reboot (Do not use this for initdefault!)
# what to do in single-user mode
ls:S:wait:/etc/init.d/rc S
~~:S:respawn:/sbin/sulogin
===============

RedHat:
===RH-inittab===
id:3:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
===============
/etc/rc.d/init.d
/etc/rc.d/rc
/etc/rc.d/rc0.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc1.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc2.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc3.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc4.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc5.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc6.d/{K,S}[0-9][0-9]*
/etc/rc.d/rc.local
/etc/rc.d/rc.sysinit

/etc/rc.d 存放启动脚本和放置文件的总目录。
/etc/rc.d/init.d 存放了各种系统服务脚本的真实最终的目的地目录,里面的文件都是shell脚本写成并且能接收传递过来的参数,一些公共的的参数为:
start   -   启动服务
stop   -   停止服务   
restart   -   重启服务
status   -   列出当前服务的状态
例: /etc/rc.d/init.d/sendmail status

/etc/rc.d/rc<x>.d/{K,S}[0-9][0-9]*  (x=0,1,2,3,4,5,6不同的运行级),你能看到形如这些个东西:
lrwxrwxrwx  1 root root 18 Jan 23 10:17 K94diskdump -> ../init.d/diskdump
lrwxrwxrwx  1 root root 19 Jan 23 10:18 K99readahead -> ../init.d/readahead
lrwxrwxrwx  1 root root 25 Jan 23 10:18 K99readahead_early -> ../init.d/readahead_early
lrwxrwxrwx  1 root root 23 Jan 23 10:18 S00microcode_ctl -> ../init.d/microcode_ctl
lrwxrwxrwx  1 root root 17 Jan 23 11:25 S01sysstat -> ../init.d/sysstat
lrwxrwxrwx  1 root root 15 Jan 23 10:16 S05kudzu -> ../init.d/kudzu
在每个服务的开头都带有"S"和"K"后面紧跟两个数字打头的文件,"K"表示在此运行级别下此服务是停止运行的,"S"表示在此运行级别下启动此服务。这两位阿拉伯数字是有一定意义的,关闭和开启服务的顺序是从00->99。
比如你想在runlevel-3下启动一个服务,就要做一个符号链接,
ln -s /etc/rc.d/init.d/sendmail /etc/rc.d/rc3.d/S80sendmail
当然一些发行版提供了几个有用的工具比如红帽的chkconfig,ntsysv。
chkconfig --add <service>添加服务到默认的运行级别。
chkconfig --list <service>列出服务在各个运行级别下默认的状态。
chkconfig,ntsysv的用法请参看man手册。

/etc/rc.d/rc.sysinit 此文件在/etc/inittab里关联,是启动进程最先执行并进行硬件初始化、系统文件一致性检查和系统环境的初始化等一系列工作。
/etc/rc.d/rc rc.sysinit执行完毕,系统的控制权交给此文件由该文件带领系统进入某一个运行级别时/etc/rc.d/rc<x>.d所做的统管动作,或者当系统正常运行时切换运行级别带领用户进入某一个运行级的统管工作。
/etc/rc.d/rc.local 此文件在系统启动各种服务的最后执行,你可放置自定义的任务在这个文件里,执行此文件后红帽系统打开终端(/sbin/mingetty)后系统启动完毕。
Redhat做了几个符号链接,以方便用户:
/etc/init.d -> rc.d/init.d
/etc/rc -> rc.d/rc
/etc/rc0.d -> rc.d/rc0.d
/etc/rc1.d -> rc.d/rc1.d
/etc/rc2.d -> rc.d/rc2.d
/etc/rc3.d -> rc.d/rc3.d
/etc/rc4.d -> rc.d/rc4.d
/etc/rc5.d -> rc.d/rc5.d
/etc/rc6.d -> rc.d/rc6.d
/etc/rc.local -> rc.d/rc.local
/etc/rc.sysinit -> rc.d/rc.sysinit


SuSE:
SuSE的略有区别
==SuSE-inittab==
# The default runlevel is defined here
id:3:initdefault:
# First script to be executed, if not booting in emergency (-b) mode
si::bootwait:/etc/init.d/boot
===============
/etc/init.d/*
/etc/init.d/boot
/etc/init.d/boot.local
/etc/init.d/halt
/etc/init.d/halt.local
/etc/init.d/rc
/etc/init.d/reboot
/etc/init.d/single
/etc/init.d/boot.d/S[0-9][0-9]*
/etc/init.d/rc0.d/{K,S}[0-9][0-9]*
/etc/init.d/rc1.d/{K,S}[0-9][0-9]*
/etc/init.d/rc2.d/{K,S}[0-9][0-9]*
/etc/init.d/rc3.d/{K,S}[0-9][0-9]*
/etc/init.d/rc4.d/{K,S}[0-9][0-9]*
/etc/init.d/rc5.d/{K,S}[0-9][0-9]*
/etc/init.d/rc6.d/{K,S}[0-9][0-9]*

/etc/init.d/ SuSE直接放置各种服务的启动脚本于此目录。此目录下有不同的运行级/etc/init.d/rc<x>.d目录。
/etc/init.d/boot SuSE略有不同的启动方式,此文件相当于RedHat的/etc/rc.d/rc.sysinit,启动进程最先执行/sbin/init.d/boot,再由此文件读取/etc/init.d/boot.d/S[0-9][0-9]*下的各种服务脚本并执行系统环境的初始化工作。
/etc/init.d/boot.local 相当于RedHat的/etc/rc.d/rc.local文件,boot文件执行完毕系统读取此文件并执行(这也是与红帽不同的地方,红帽是各种各样的服务执行完毕最后执行的)
/etc/init.d/rc 相当于RedHat的/etc/rc.d/rc文件,系统的控制权交给此文件由该文件带领系统进入某一个运行级别时/etc/init.d/rc<x>.d所做的统管动作,或者当系统正常运行时切换运行级别带领用户进入某一个运行级的统管工作。
SuSE的符号链接:
/etc/rc.d -> init.d

两个有用的链接:
http://www.linux.com/print.pl?sid=06/01/03/1728227
http://www.cyberciti.biz/tips/li ... t-stop-service.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP