linux启动服务概述

传统的linux中定义了七个运行级,分别如下:
1、0级是完全关闭系统的级别。
2、1级或S级代表单用户模式,会关闭所有的多用户和远程登录进程。
3、2--5级是多用户级别。
4、6级是“多重引导”级别。
其中,0级和6级是不能让系统停留的,进入这两个级别的效果是关闭系统或者重新引导系统。在多数系统上,正常的多用户运行级别是2或3级,运行级5经常用于X Windows的登录进程,运行级4很少使用,运行级1和S的定义在每种系统上是不同的。
每个运行级下运行的服务是不一样的,/etc/inittab 规定了系统进入到每一级别时要运行的命令。在机器引导时,init 从运行级0开始,逐级往上运行到在 /etc/inittab 中所设置的默认运行级别。当机器关闭时,又以相反的顺序执行同样的处理过程。
不过为了更灵活,linux通常采用“改变运行级”脚本的形式,由 inittab 来调用。这一脚本接下来执行位于与运行级有关的目录下的其它脚本,从而把系统带入到新的状态。
启动脚本的主拷贝位于 /etc/init.d/ 目录下,每个脚本负责一个守护进程或者系统的某个特定方面。为方便管理,这些脚本都可接受参数 start 和 stop,多数还接受 restart,以便能快速启动或停止对应的服务。例如下面这个可以启动、停止或重新启动 sshd 服务的启动脚本:

#!/bin/sh

test -f /usr/bin/sshd || exit 0
case "$1" in
start)
echo "Starting sshd."
/usr/sbin/sshd
;;
stop)
echo "Stopping sshd."
kill `cat /var/run/sshd.pid`
;;
restart)
echo "Stopping sshd."
kill `cat /var/run/sshd.pid`
echo "Starting sshd"
/usr/sbin/sshd
;;
*)
echo "Usage: /etc/init.d/sshd start|stop|restart"
exit 1
;;
esac

尽管 /etc/init.d/ 中的脚本能启动和停止各个服务,但是由init运行的主控制脚本需要知道其它一些信息,这些信息说明了要进入任何指定的运行级别需运行哪些脚本。为简化操作,当主脚本把系统引入到一个新的运行级别时,它不是直接在 init.d 目录下找,而是查找叫做 /etc/rcLEVEL.d/ 的目录,此处的 LEVEL 就是要进入的运行级别编号(例如 rc0.d、rc1.d 等)。这些 /etc/rcLEVEL.d/ 目录包含了链接到 /etc/init.d/ 目录中的服务的符号链接,它们的名称都以S或K开头,后跟一个数字以及该脚本所控制的服务名(例如,S55sshd等)。当init从低的运行级别向高的运行级别过渡时,它按照数字递增的顺序运行所有以S(表示start)开头的、带有start参数的脚本;当init从高的运行级别向低的运行级别过渡时,它按照数字递减的顺序运行所有以K(表示kill)开头的、带有stop参数的脚本。
这一机制让系统管理员可以细粒度地控制启动服务的顺序。所以在加入新服务时,一定要考虑到这种依赖关系。要告诉系统什么时候启动一个守护进程,我们必须在适当的目录下创建符号链接。例如,要告诉系统在运行级2期间启动CUPS并在系统关闭前妥善地停止这个守护进程,那么创建下面这一对链接就够了(有些系统以不同的方式处理系统关闭和重新引导,所以可能需要在 /etc/rc6.d/ 目录中也放一个符号链接,以确保系统重新引导时,该守护进程能被正确关闭):
# ln -s /etc/init.d/cups /etc/rc2.d/S80cups
# ln -s /etc/init.d/cups /etc/rc2.d/K80cups
对于 Red Hat 和 Fedora 来说,init 都把运行级作为参数来调用脚本 /etc/rc.d/rc。/etc/rc.d/rc 一般运行在“正常”模式下,此时它只做它自己的事情。它也可运行在“确认”模式下,此时它在运行每个单独的启动脚本以前会询问用户。Red Hat 和 Fedora 有一个 chkconfig 命令来帮助用户管理服务。该命令可以在系统中增删启动脚本,也可以管理这些脚本执行的优先级,还能列出一个脚本目前为哪些运行级做了配置。Red Hat 还有一个 rc.lacal 脚本,是作为启动过程的一部分而运行的最后一个脚本,用户可以向其中添加自己定制的启动内容。Red Hat 引导过程的大多数配置应该通过操作 /etc/sysconfig 中的配置文件来完成。下表总结了 /etc/sysconfig 目录中一些项的功能:
[table]
|文件/目录|功能或内容|
|clock|指定系统有的时钟类型(几乎总是 UTC)|
|console|一个总是为空的神秘目录|
|httpd|决定使用 Apache 的何种处理模式|
|hwconf|包含系统硬件的所有信息,由 Kudzu 使用|
|i18n|包含系统的本地设置(日期格式、语言等)|
|init|配置来自启动脚本的消息的显示方式|
|keyboard|设置键盘类型(使用 us 代表标准的 101 键美国键盘)|
|mouse|设置鼠标类型,由 X 和 gpm 使用|
|network|设置全局的网络参数(主机名称、网关、转发机制等)|
|network-scripts|包含补充脚本和网络配置文件的目录|
|sendmail|为 sendmail 设置选项|
[/table]

参考资料:《linux系统管理技术手册》第二章--引导和关机。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值