Ubuntu的初始化系统工具Upstart

一、简介

UpStart 基于事件机制,采用事件驱动机制也带来了一些其它有益的变化,比如加快了系统启动时间。采用这种事件驱动的模式,upstart 完美地解决了即插即用设备带来的新问题。

Ubuntu UpStart 是比sysvinit更快的系统,但是他兼容了sysvinit系统。主要的概念是 job 和 event,一个job就是sysvinit里面的一个脚本。

sysvinit 运行时是同步阻塞的。一个脚本运行的时候,后续脚本必须等待。这意味着所有的初始化步骤都是串行执行的,而实际上很多服务彼此并不相关,完全可以并行启动,从而减小系统的启动时间。

在 Linux 大量应用于服务器的时代,系统启动时间也许还不那么重要;然而对于桌面系统和便携式设备,启动时间的长短对用户体验影响很大。此外云计算等新的 Server 端技术也往往需要单个设备可以更加快速地启动。

假如您使用的 Linux 发行版是 Ubuntu,很可能会发现在您的计算机上找不到/etc/inittab 文件了,这是因为 Ubuntu 使用了一种被称为 upstart 的新型 init 系统。

Ubuntu 15.04开始预设使用Systemd,但是可以在开机选项选择使用Systemd或Upstart,但是不可同時使用Sysvinit或Upstart并存。

二、详解

在/etc/init/目录下面,存放着各种各样的.conf文件,这些文件就是需要启动的服务进程的文件。系统会按照这些文件的内容,执行相应的内容。

编辑文件 vim /etc/init/mytest.conf

description "mytest"
author "bsspirit "

env var=bar
export var

start on startup
stop on shutdown

respawn
respawn limit 2 5

console output

pre-start script
        logger "pre-start: before: var=$var"
        var=pre-start
        export var
        logger "pre-start: after: var=$var"
end script

post-start script
        logger "post-start: before: var=$var"
        var=post-start
        export var
        logger "post-start: after: var=$var"
end script

script
        logger "script: before: var=$var"
        var=main
        export var
        sleep 60000
        logger "script: after: var=$var"
end script

post-stop script
        logger "post-stop: before: var=$var"
        var=post-stop
        export var
        logger "post-stop: after: var=$var"
end script

三、使用

启动mytest任务
start mytest

查看日志跟踪运行状态
tail -f /var/log/syslog

查看mytest任务状态
status mytest

查看系统进程,因为在程序中用sleep停止,要通过sleep查询
ps -aux|grep sleep
杀掉sleep进程,mytest自动重启

停止mytest
stop mytest

通过命令传参数,启动mytest
start mytest var=conan

不同参数,再次启动mytest
start mytest var=bsspirit

参考

1、upstart把应用封装成系统服务
2、一个完整的upstart脚本分析
3、ubuntu的Upstart启动流程
4、init系统sysvinit,UpStart 简介及chkconfig和service
5、Linux初始化init系统-Sysvinit、Upstart、Systemd
6、浅析 Linux 初始化 init 系统-UpStart
7、Upstart 将被放弃,Ubuntu 投入 Systemd 怀抱
8、浅析 Linux 初始化 init 系统-Systemd
9、浅析 Linux 初始化 init 系统-sysvinit
10、ubuntu系统添加upstart脚本

你可能感兴趣的:(Ubuntu的初始化系统工具Upstart)