Upstart概述引导方法事件驱动的任务和服务

/*********************************************************************
 * Author  : Samson
 * Date    : 04/30/2014
 * Test platform:
 *              3.11.0-12-generic #19-Ubuntu
 *              GNU bash, version 4.2.45
 * *******************************************************************/

Upstart是一个基于事件的替代在引导过程中处理任务和服务的启动、停止、监督整个系统执行的/sbin/init守护进程的一个程序。


在Unix和Linux系统上的“初始化”或“系统初始化”过程中有进程ID(PID)为“1”。也就是说,它是启动在系统引导时(忽略的initrd/ initramfs)装载的第一道工序。依据官方说法。Upstart是一个替代传统的Unix的“System V”的“init”制度的“INIT”。Upstart提供与传统的“初始化”系统同样的功能。但超越了原有的很多方面。



若是採用了Upstart方式的系统在启动时。会去运行/etc/init/下的众多.conf文件。这此文件里包括的即是服务或任务的运行方式。这些文件里就使用了基于Upstart事件的方法,比如ssh.conf,这是启动ssh服务的Upstart事件的配置文件;详细说明例如以下:

# ssh - OpenBSD Secure Shell server
#
# The OpenSSH server provides secure shell access to the system.

description    "OpenSSH server"

#表示在登录界面运行的时候进行此服务(sshd)的启动
start on desktop-session-start
#以下这句的意义是当系统在2、3、4、5这四种启动模式下或文件系统事件信号的情况下
#start on filesystem or runlevel [2345]
stop on runlevel [!2345]
#当服务或程序为停止状态时,为了让服务有持续性。则须要进行重新启动此服务
respawn
#重生极限计数间隔|无限
#Syntax:
#respawn limit COUNT INTERVAL | unlimited
#下面语句的意义为:重新启动的最大次数为10次 每次间隔5秒
respawn limit 10 5
umask 022

# 'sshd -D' leaks stderr and confuses things in conjunction with 'console log'
console none
#pre-start:
#Syntax:
#pre-start exec|script
#在进行任务之前进行预处理的块
#下面是推断sshd是否可运行 文件sshd_not_to_be_run是否存在等
pre-start script
    test -x /usr/sbin/sshd || { stop; exit 0; }
    test -e /etc/ssh/sshd_not_to_be_run && { stop; exit 0; }
    test -c /dev/null || { stop; exit 0; }
    #能够在这里打印运行的时间。
    echo "`date` is start." > /home/wbc/sshdatatime.log
    #改动sshd的权限
    mkdir -p -m0755 /var/run/sshd
end script

# if you used to set SSHD_OPTS in /etc/default/ssh, you can change the
# 'exec' line here instead
exec /usr/sbin/sshd -D

Upstart參考:
http://upstart.ubuntu.com/cookbook/#what-is-upstart


重新启动系统后。服务启动时间是启动登录屏幕后的时间。相反,系统将开始启动该服务;

posted @ 2015-12-09 14:22  hrhguanli  阅读(400)  评论(0编辑  收藏  举报