????????????Linux ???? init ???????????????????????????? sysvinit ??????????????????? UpStart ?? systemd ???????????????? Linux ???а?????? systemd???????????????????? init ??????ú???????? Linux ???????????????????????????????????????????????????á?????????е??????????????? UpStart ????????á?
????Upstart ???
?????????????? Linux ???а??? Ubuntu???????????????????????????/etc/inittab ????????????? Ubuntu ???????????? upstart ?????? init????
???????? Upstart ?????
????????? 2006 ???????????? Ubuntu ???????????? Linux ?????????????????????似????????????? sysvinit ?????Щ????????????????????????????? Scott James Remnant ??????? upstart?? ?? Linux ?????? 2.6 ???????????????????μ?????????????? Linux ??????????????????????????????????????????????????豸???????????Я??豸?????????????????????????????????????μ??????????????????У?????????????????????????????豸?????????????????????? U ????????????????????????? USB ??????????????????????Щ??????????????????????????????????????????Щ?豸???? 2.6 ???????£??????????????????????????????????????????????????Щ?豸???????????????????Я??豸???????????????? ??????Щ????? sysvinit ???????Щ??????????????????????????????豸????????????????????????????????????????????? CUPS ?????????????????н???????????£??????Щ?????????????Sysvinit ??а????????????????????????????п??????????????????????????????????????????CUPS ?????????????? ???????繲??????????????/etc/fstab ?У??????????????????????????????? NFS?????? iSCSI ?豸?????????????? sysvinit ?????п????????sysvinit ????/etc/fstab ??????????????????????????????????????????????????NFS ???? iSCSI ????????????????????й????????Sysvinit ???? netdev ??????????????????/etc/fstab ???? netdev ?????????????????????????????????????????????????????? netfs ????????????????Щ????????????????????????????????????????????????????????????????????????? netdev ?????????????????????????塣 ????????????????Ubuntu ????????????????????????? init ?????????????????????????μ? init ?????? UpStart??UpStart ???????????????? U ????? USB ????udev ????????????????豸??????????μ??????UpStart ??????????????????????????????紦??/etc/fstab ?д?????????????????????????????upstart ????????????弴???豸???????????? ???????????????????????????Щ?????????仯??????????????????sysvinit ??????????????????????????е???????????????????????ζ?????е????????趼???????е???????????????????????????????????????????С???????????? Linux ???????????????????????????????????????????????????????????Я??豸????????????????????????????????????μ? Server ??????????????????豸???????????????? UpStart ????????Щ???????????????? Ubuntu ?????? UpStart????????????????????? RHEL ??????? UpStart ???滻 sysvinit ??? init ????
????Upstart ?????
????UpStart ??????????? sysvinit ????????????????????UpStart ?????
??????????????
????????????????????????????
??????????γ???????????
??????Щ?????? UpStart ????????????????????Я????У???????Щ???е??????????????
????Upstart ?????????
????Upstart ??????????????????????UpStart ?????????? job ?? event??Job ???????????????????????????????????????????????????????????????????? Job ?????????????????????????????upstart ?????? job ?????????????
????Job
????Job ???????????????????????????????????????? sysvinit ?е????????????????????????????
????task job??
????service job??
????abstract job??
????task job ????????????????????????????????????????? service job ?????????????????? apache httpd????????????????????????????г?????????????????? init ????????????????????????? init ?????????????????????? init ????????????????????????????????????????????????????????? upstart ????????й?????ù?????????????????? Abstract job ???? upstart ?????????????? upstart ???????????????????????ù??????? ?????????????????????????????Job??????????Upstart ?????????????????????????????????????????????session??????????????????????????? system job????????????????????????? system job???????????????????? session job??
????Job ????????
????Upstart ??????????????????????????????????????п???????к???????????????????????????????仯??Upstart ?????????Щ?????????????翪??п????(pre-start)?????????(starting)??????????(started)??????????????????????????????????????????? ?????????????????????仯????????????????????????????????????????????γ????????????????????У????????????????????仯?????init ?????????????????event????
?????? 1.Upstart ?? Job ???????

????? 1 ???? Job ????????
????? 1. Job’s life cycle

????image003 ????????????????? init ??????????????????????ù?????????仯??
????Starting
????Started
????Stopping
????Stopped
???????????????仯?????????????????????????????????????????ɡ?
??????? Event
??????????壬Event ??????????????? upstart ??????????????????????????????????????Upstart ????????????????????????κ??????????????? upstart ????????????????????????????????????? upstart ???????й???????????????????????? Event ??????????: signal??methods ???? hooks?? Signals Signal ???????????????????????????????????????????? Methods Methods ?????????????????? Hooks Hooks ???????????????????????? Signals ?? Methods ??????÷??? Hooks ????????????????????????????????????????????????? ??????????????????????????г??Щ??????????????????????????????????????壺
??????????????init ???????”start”???
?????????????д?????? job ????????????????
??????????豸????????????????????????????
???????????????????????????????
???????? atd ?? cron?????????????????????????????????
??????????? job ???????????????????????
?????????????????????????????????????
????????????豸????????????????????????
??????·????????????????????????????
????????? Linux ???а?? upstart ?в???????????????????????????????????????man 7 upstart-events????????б??
????Job ?? Event ????Э??
????Upstart ??????????????????е????????????????????ж??????????????????????????? ????????????????????????????Э???????????????????????£???????????init ?????????У?init ???????????????????????Щ????????????Щ???????С???????????й????л???????????????Щ???????????μ???????С???????????????????????????????? ??????Щ???????????????????У???????????????????????
???????????????
?????κ??????????????????????????????Job Configuration File????????????????????????????????????????С???stanza???????С??????????????????飬?????????????????棬???? author С?????????????????????????????????/etc/init ???棬????.conf ????????????????
?????嵥 1. ?????????????????
????#This is a simple demo of Job Configure file
????#This line is comment?? start with #
????#Stanza 1?? The author
????author “Liu Ming”
????#Stanza 2?? Description
????description “This job only has author and description?? so no use?? just a demo”
????????????????????κ?????????????????????????????????С??????б???????С????????????? “expect” Stanza Upstart ??????????????????????? SysVinit ?????Upstart ???????е???????????????????????????????????????????????????????????????????????????л?????????????????????????м??????????????????? Upstart ???????????á? ????????????????????????????Upstart ???????÷?????????????????? httpd ???????? PID ? 1000????????????? httpd ??????????????????Upstart ???????? ps ?????????? 1000???????????????????У?????????????????????????? httpd ???????Upstart ??? kill ????????y????????Upstart ??????????????????? ?????????????????????????????(daemon)???????????????(fork)????????????Щ????????????????????????????????????Σ???? UpStart ????????????????????????????????? PID???????UpStart ????????ж??????????????????Σ?????????÷???????????????б???д?? expect С??????? UpStart ???????????????Ρ? Expect ???????”expect fork”?????????? fork ??Σ?”expect daemonize”???????? fork ???Ρ? “exec” Stanza ??”script” Stanza ??? UpStart ????????????Щ????????????????? shell ??????????????ν??????”exec”????????ù?????????е???????”script”??????????????е????? ?嵥 2 ????? exec ?? script ???÷???
?????嵥 2.script ????
????# mountall.conf
????description “Mount filesystems on boot”
????start on startup
????stop on starting rcS
????...
????script
????. /etc/default/rcS
????[ -f /forcefsck ] && force_fsck=”--force-fsck”
????[ “$FSCKFIX”=”yes” ] && fsck_fix=”--fsck-fix”
????...
????exec mountall –daemon $force_fsck $fsck_fix
????end script
????...
???????? mountall ????????ù??????????????У???????????е?????????ù????????и??????????”script”???????壻?????У?????? exec ????? mountall ??? “start on” Stanza ??”stop on” Stanza “start on”????????????????????????”start on”?????????????????? start on EVENT [[KEY=]VALUE]… [and|or...] EVENT ??????????????????? start on ?????????????????ù???????????????????????????????????????? and ???? or ????”??????????????”????”??????????????”????????????????????????????????????????????????????????????????? start on ?? EVENT ????????? KEY=VALUE ????????????????????????????????(KEY)??????(VALUE)???б????????????????????????????????????? KEY ???????? “stop on”??”start on”?????????????????幤?????????????????? ?????嵥 3 ??”start on”??”stop on”??????????
?????嵥 3. start on/ stop on ????
????#dbus.conf
????description     “D-Bus system message bus”
????start on local-filesystems
????stop on deconfiguring-networking
????…
????D-Bus ?????????????????????????????????????? local-filesystems ??????? D-Bus?????????? deconfiguring-networking ???????? D-Bus ????