免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6888 | 回复: 21
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
[收藏(0)] [报告]
发表于 2007-01-31 10:20 |只看该作者 |正序浏览
20可用积分
比如rc0.d,rc1.d,rc2.d.......,里面好像是很多脚本文件,请教这些是用于什么目的,多谢!

论坛徽章:
0
21 [报告]
发表于 2007-03-12 10:40 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
20 [报告]
发表于 2007-03-12 09:53 |只看该作者
放启动脚本的需要和系统一起启动的脚本都放在rc.d 里面

论坛徽章:
13
CU大牛徽章
日期:2013-04-17 11:20:3615-16赛季CBA联赛之吉林
日期:2017-05-25 16:45:4715-16赛季CBA联赛之福建
日期:2017-03-13 11:33:442017金鸡报晓
日期:2017-02-08 10:39:422017金鸡报晓
日期:2017-01-10 15:13:29IT运维版块每日发帖之星
日期:2016-03-15 06:20:01IT运维版块每日发帖之星
日期:2015-10-02 06:20:00CU十二周年纪念徽章
日期:2013-10-24 15:41:34CU大牛徽章
日期:2013-09-18 15:15:45CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-04-17 11:46:39CU大牛徽章
日期:2013-04-17 11:46:28
19 [报告]
发表于 2007-03-11 22:24 |只看该作者
标准的启动脚本都需要处理几个标准的参数,包括了 start ,stop,restart
还有几个,这样你按要求写好后,在不同的运行基本作符号链接就行了.

论坛徽章:
0
18 [报告]
发表于 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

论坛徽章:
0
17 [报告]
发表于 2007-02-02 16:46 |只看该作者
谢谢各位,个人觉得HonestQiao和 skylove的答案给我的帮助最大,分数可以分开给吗?怎么操作呢

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
16 [报告]
发表于 2007-02-01 00:57 |只看该作者
說穿了就是要讀 shell script 而已。
先從 /etc/inittab 所指定的 command 開始去挖所有的 script ,就能有個大概了。
不同的 distro 在 script 設計上或有不同。

论坛徽章:
0
15 [报告]
发表于 2007-01-31 20:41 |只看该作者

别乱加!

要记得有很多东西在启动时是有顺序的,

个人认为把自己的东西放在RC.LOCAL里面,想想如果网卡的IP都没有,你就加一条路由行吗?

把自己的东西统一放在最后执行,以后要改也方便啦!

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
14 [报告]
发表于 2007-01-31 14:21 |只看该作者
按照7楼的做法:
chmod 755 /etc/rc.d/init.d/test_server #设置执行权限,这个是通用的
chkconfig --add test_server #添加服务,这个是通用的
chkconfig test_server on #设置服务可用,这个是通用的
service test_server start #启动服务,这个是通用的
service test_server stop #关闭服务,这个是通用的
你无须考虑其他的事情。

论坛徽章:
0
13 [报告]
发表于 2007-01-31 14:03 |只看该作者
基本搞明了,再想问一下,suse 和redhat的rc目录结构和启动级别完全是一样的么,redhat下的是否可以同样在suse下实现。
另外,这里的分数怎么给?

论坛徽章:
0
12 [报告]
发表于 2007-01-31 13:57 |只看该作者
扎实!!!!!!!!!
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP