Linux引导过程与故障排除|第3章:Upstart管理系统启动过程和服务
Synopsis: Upstart 由 Ubuntu 所开发,它基于事件驱动模型(event-based),能够在监听到事件发生后以异步的方式响应事件,从而实现并行启动服务进程(引导过程更快)。同时可以按需启动服务,比如在系统运行期间插入 USB 设备后,会触发相应的事件,此时 Upstart 才启动对应的服务
1. Upstart 介绍
传统的 SysVinit
程序以 串行
的方式依次启动各服务,但是有些服务之间根本就没有依赖关系,应该让它们并行启动以加快启动效率才对
在 Linux 主要应用于服务器的时代,由于很少重启机器,所以 SysVinit
运行非常良好。如果需要更换硬件,则会先关闭系统,安装完新硬件后再重启系统。但是,随着 Linux 的不断发展,越来越多的便携式设备(笔记本电脑或嵌入式设备)也开始使用 Linux 系统,桌面系统或便携式设备的一个特点是经常重启,而且要频繁地使用硬件 热插拔
技术。现代 Linux 系统已经可以处理动态添加或删除新硬件设备,但是 SysVinit
系统本身无法处理这种硬件动态变化
于是,Ubuntu 的研发人员开发了一套新的 init
系统,它就是 Upstart
。它基于 事件驱动模型(event-based)
,能够在监听到 事件
发生后以 异步
的方式响应事件,从而实现并行启动服务进程。同时可以按需启动服务,比如在系统运行期间插入 USB 设备后,会触发相应的事件,此时 Upstart
才启动对应的服务。更详细的介绍,请参考: http://upstart.ubuntu.com/cookbook/ 或附件
Upstart
的两个重要组件为 jobs
和 events
1.1 Job
job
是指一个 工作单元(a unit of work)
,也可以称为 Task
或 Service
。job
的配置文件一般命名为 <name>.conf
,所有系统 job 都保存在 /etc/init/
目录下,而用户 job 保存在 $HOME/.init/
目录下
[root@CentOS ~]# ls -l /etc/init/ total 68 -rw-r--r--. 1 root root 412 Oct 10 2013 control-alt-delete.conf -rw-r--r--. 1 root root 130 Jun 25 2013 init-system-dbus.conf -rw-r--r--. 1 root root 463 Oct 10 2013 kexec-disable.conf -rw-r--r--. 1 root root 560 Oct 10 2013 plymouth-shutdown.conf -rw-r--r--. 1 root root 357 Oct 10 2013 prefdm.conf -rw-r--r--. 1 root root 505 Oct 10 2013 quit-plymouth.conf -rw-r--r--. 1 root root 417 Oct 10 2013 rc.conf -rw-r--r--. 1 root root 1046 Oct 10 2013 rcS.conf -rw-r--r--. 1 root root 430 Oct 10 2013 rcS-emergency.conf -rw-r--r--. 1 root root 725 Oct 10 2013 rcS-sulogin.conf -rw-r--r--. 1 root root 2915 Nov 23 2013 readahead-collector.conf -rw-r--r--. 1 root root 1559 Nov 23 2013 readahead.conf -rw-r--r--. 1 root root 726 Nov 23 2013 readahead-disable-services.conf -rw-r--r--. 1 root root 1302 Oct 10 2013 serial.conf -rw-r--r--. 1 root root 791 Oct 10 2013 splash-manager.conf -rw-r--r--. 1 root root 473 Oct 10 2013 start-ttys.conf -rw-r--r--. 1 root root 335 Oct 10 2013 tty.conf
关于 job
配置文件的语法(各配置段的含义)请参考 man 5 init
或 http://upstart.ubuntu.com/cookbook/
1.2 Event
event
也可以称为 signal
/ method
/ hook
,事件会被 emitted(created and then broadcast)
到整个 Upstart 系统,系统启动时会产生 startup
事件,请参考 man 8 init
和 man 7 startup
另外,管理员可以通过如下命令随时发送事件:
Upstart
有一组特殊的事件,可以使用它们来通知 job
进行状态转换:
0 条评论
评论者的用户名
评论时间暂时还没有评论.