Ubuntu10.10,ubuntu11.04开机服务启动优化 基于事件的启动方式

ubuntu10.10以后,启动方式改成了基于事件的启动方式,Upstart,代替以往的init.d/rcX.d的线性启动方式,采用事件的并行,并发执行,有

助于加快启动速度。

Upstart init daemon 是基于事件的,当系统中的什么情况发生变化时,它会运行某个特定的程序.这里被运行的程序多半是用来启动或终止服务的脚本.这个配置方式和systemv 在系统进入某个运行级别的时候运行init脚本的链接的概念实际上是非常类似的,只不过 upstart 更加灵活一些.Upstart 不仅能在运行级别改变的时候启动或终止服务,也能在接收到系统发生其他改变的信息的时候启动或终止服务.这些系统的改变被称为“事件”.例如,当 upstart 从 udev 接收到运行时文件系统加载、打印机安装或其他类似的设备添加或删除的信息,并采取相应的行动.Upstart 也可以在系统启动、关闭或某个任务状态改变的时候启动或关闭服务.

有几个名词帮助我们理解 init 相关的东西.事件(event)是 init 可以得到的状态变更信息.几乎系统所有的内部或外部状态变更都可以触发一个事件.比如,引导程序会触发启动(startup)事件,系统进入运行级别2会触发运行级别2(runlevel 2)事件,而文件系统加载则会触发路径加载(path-mounted)事件,拔掉或安装一个热插拔或USB设备(如打印机)也会触发一个时间.用户还可以通过 initctl emit 命令来手动触发一个事件.

一个工作(job)是 init 可以理解的一系列指令.典型的指令包括一个程序(二进制文件或是脚本)和事件的名称.Upstart init daemon 会在事件触发的时候运行相应的程序.用户可以分别用 initctl start 和 stop 命令手动启动或终止一项工作.工作又可以分为任务和服务.

任务是运行、并在执行结束后返回到等待状态的工作.

服务是那些通常不会自己结束的工作.比如,logd daemon 和 gettys 就被实现为服务.init daemon 会监测每个服务的状态,如果服务出现问题会重启服务,在某些事件触发时或手工停止时会杀死服务.

使用 initctl (init control) 工具,具有 root 权限的管理员可以和 Upstart init daemon 通信.这个工具可以用来启动、停止或报告(report)一项工作. 比如,initctl list 命令会列出所有的工作和它们的状态:

现在,即使你将rcX.d下的文件去爱不删除,都不影响ubuntu的启动,服务的启动依赖于/etc/init/下的每个服务对应的配置文件,通过修改这

配置文件,可以更改服务的运行级别。

你可能感兴趣的:(ubuntu)