.
服务的启动、关闭与观察等方式
所有的服务启动½本通通放置于
/etc/init.d/
底下,基本上都是使用
bash shell script
所写成的½本程序,需
要启动、关闭、重新启动、观察状态时,
可以透过如下的方式来处理:
o
启动:
/etc/init.d/daemon start
o
关闭:
/etc/init.d/daemon stop
o
重新启动:
/etc/init.d/daemon restart
o
状态观察:
/etc/init.d/daemon status
.
服务启动的分类
init
服务的分类中,依据服务是独立启动或被一只总管程序管理而分为两大类:
o
独立启动模式
(stand alone)
:服务独立启动,该服务直½常驻于内存中,提供本机或用户的服务行
为,反应速度快。
o
总管程序
(super daemon)
:由特殊的
xinetd
inetd
这两个总管程序提供
socket
对应或
port
对应
的管理。当没有用户要求某
socket
port
时,
所需要的服务是不会被启动的。若有用户要求时,
xinetd
总管才会去唤醒相对应的服务程序。当该要求½束时,这个服务也会被½束掉~
因为透过
xinetd
所总管,因此这个家伙就被称为
super daemon
。好处是可以透过
super daemon
来½行服务
的时程、联机需求等的控制,缺点是唤醒服务需要一点时间的延迟。
.
服务的相依性问题
服务是可能会有相依性的~例如,你要启动网络服务,但是系统没有网络,
那怎么可能可以唤醒网络服务
呢?如果你需要联机到外部取得认证服务器的联机,但该联机需要另一个
A
服务的需求,问题是,
A
服务
没有启动,
因此,你的认证服务就不可能会成功启动的!这就是所谓的服务相依性问题。
init
在管理员自
己手动处理这些服务时,是没有办法协助相依服务的唤醒的
.
执行等级的分类
上面说到
init
是开机后核心主动呼½的,
然后
init
可以根据用户自定义的执行等级
(runlevel)
来唤醒不
同的服务,以½入不同的操作½面。基本上
Linux
提供
7
个执行等级,分别是
0, 1, 2...6
比½重要的
1)
单人维护模式、
3)
纯文本模式、
5)
文字加图形½面。而各个执行等级的启动½本是透过
/etc/rc.d/rc[0-6]/SXXdaemon
连½到
/etc/init.d/daemon
连½档名
(SXXdaemon)
的功能为:
S
为启动该
服务,
XX
是数字,为启动的顺序。由于有
SXX
的设定,因此在开机时可以『依序执行』所有需要的服务,
同时也能½决相依服务的问题。这点与管理员自己手动处理不太一样就是了。
.
制定执行等级默认要启动的服务
若要½立如上提到的
SXXdaemon
的话,不需要管理员手动½立连½档,
透过如下的指令可以来处理默认
启动、预设不启动、观察预设启动否的行为:
o
预设要启动:
chkconfig daemon on
o
预设不启动:
chkconfig daemon off
o
观察预设为启动否:
chkconfig --list daemon
.
执行等级的切换行为
当你要从纯文本½面
(runlevel 3)
切换到图形½面
(runlevel 5)
不需要手动启动、关闭该执行等级的相关
服务,只要『
init 5
』即可切换,
init
这小子会主动去分析
/etc/rc.d/rc[35].d/
这两个目录内的½本,
然后
启动转换
runlevel
中需要的服务~就完成整体的
runlevel
切换。
基本上
init
主要的功能都写在上头了,重要的指令包括
daemon
本身自己的½本
(/etc/init.d/daemon)
xinetd
这个特殊的总管程序
(super daemon)
、设定预设开机启动的
chkconfig
以及会影响到执行等级的
init N
等。虽然
CentOS 7
已经不使用
init
来管理服务了,不过因为考虑