免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
11 [报告]
发表于 2007-01-31 11:54 |只看该作者
原帖由 los 于 2007-1-31 11:27 发表于 6楼  
谢谢楼上诸位,我真实的目的是想将一个用户程序在系统启动时自动运行,比如运行一个名称为progm的程序,该怎么写脚本呢?脚本放在哪个rc下啊


另:

简介:本文通过对chkconfig 的介绍,为Linux 系统管理员轻松管理 /etc/rc[0-6].d 目录下众多的符号连接提供了详细的说明。那些Linux “菜鸟” 也可以通过本文了解和认知Linux 系统的运行级的概念。



不像DOS 或者 Windows,Linux 可以有多种运行级。常见的就是多用户的2,3,4,5 ,很多人知道 5 是运行 X-Windows 的级别,而 0 就是关机了。运行级的改变可以通过 init 命令来切换。例如,假设你要维护系统进入单用户状态,那么,可以使用 init 1 来切换。在Linux 的运行级的切换过程中,系统

会自动寻找对应运行级的目录/etc/rc[0-6].d下的K 和 S 开头的文件,按后面的数字顺序,执行这些脚本。对这些脚本的维护,是很繁琐的一件事情,Linux 提供了chkconfig 命令用来更新和查询不同运行级上的系统服务。


语法为:


chkconfig --list [name]

chkconfig --add name

chkconfig --del name

chkconfig [--level levels] name

chkconfig [--level levels] name



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


chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务

是否在当前运行级启动。如果是,返回 true,否则返回 false。 --level 选项可以指定要查看的运行级而不一定是当前运行级。


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


对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,但是 reset 可以对所有运行级有效。指定 --level 选项时,可以选择特定的运行级。


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



选项介绍:


--level levels


指定运行级,由数字 0 到 7 构成的字符串,如:


--level 35 表示指定运行级3 和5。


--add name


这个选项增加一项新的服务,chkconfig 确保每个运行级有一项

启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init

脚本自动建立。


--del name


用来删除服务,并把相关符号连接从 /etc/rc[0-6].d 删除。


--list name


列表,如果指定了name 那么只是显示指定的服务名,否则,列出

全部服务在不同运行级的状态。



运行级文件


每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。

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

第二行对服务进行描述,可以用\ 跨行注释。


例如,random.init 包含三行:

# chkconfig: 2345 20 80

# description: Saves and restores system entropy pool for \

# higher quality random number generation.


表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动优先权为20,停止优先权为 80。

论坛徽章:
1
狮子座
日期:2013-12-05 16:04:37
12 [报告]
发表于 2007-01-31 13:19 |只看该作者
系统引导时要启动的文件.

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

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

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
15 [报告]
发表于 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
16 [报告]
发表于 2007-01-31 20:41 |只看该作者

别乱加!

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

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

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

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

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

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

论坛徽章:
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
20 [报告]
发表于 2007-03-11 22:24 |只看该作者
标准的启动脚本都需要处理几个标准的参数,包括了 start ,stop,restart
还有几个,这样你按要求写好后,在不同的运行基本作符号链接就行了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP