Ubuntu中怎么利用upstart實(shí)現(xiàn)進(jìn)程管理

這篇文章將為大家詳細(xì)講解有關(guān)Ubuntu中怎么利用upstart實(shí)現(xiàn)進(jìn)程管理,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),成都網(wǎng)站托管等一站式綜合服務(wù)型公司,專(zhuān)業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)建站。

為了對(duì)原有的init實(shí)現(xiàn)向后兼容,Ubuntu upstart可以說(shuō)是在表象上保留了大部分原來(lái)init的特性,因而目前l(fā)inux初始化進(jìn)程名仍然叫init,而改變的核心,乃是Event機(jī)制。理解并講清楚這個(gè)改變的重要意義和內(nèi)在機(jī)理可不是件容易的事,所以我只打算研究一下目前 Ubuntu upstart(0.3.9, ubuntu 8.04)在系統(tǒng)啟動(dòng)中的表象行為。[注:據(jù)Scott James Remnant在其博客上所說(shuō),Ubuntu upstart 0.5.0版本將在未來(lái)幾周發(fā)布。

關(guān)于系統(tǒng)啟動(dòng),熟悉Linux的人大多應(yīng)該知道,init進(jìn)程(PID=1)乃是所有進(jìn)程的父進(jìn)程,所有進(jìn)程由它控制。init進(jìn)程的運(yùn)行時(shí)間是內(nèi)核完成文件系統(tǒng)的加載后。那么init進(jìn)程是如何開(kāi)啟系統(tǒng)中的其它進(jìn)程的呢?在闡述這個(gè)問(wèn)題之前,大致地說(shuō)明一下目前ubuntu中與init相關(guān)的幾個(gè)目錄和應(yīng)用程序,可以方便后面的論述。這些目錄和程序包括:

init
telinit
runlevel
/etc/event.d/ /etc/init.d/ /etc/rcX.d/

前三個(gè)是應(yīng)用程序(注意哦,它們都不是shell腳本),可以理解為是由內(nèi)核調(diào)用的。關(guān)于它們的功能,從manpage查看就可以了。我們的重點(diǎn)是后面給出的三個(gè)目錄。

首先是/etc/event.d/目錄,這是Ubuntu upstart的核心,Ubuntu upstart不同于原有的init的地方就在于它引入了event機(jī)制。Event 機(jī)制通俗的講就是將所有進(jìn)程的觸發(fā)、停止等等都看作event(事件)。/etc/event.d/中就存放了目前Ubuntu upstart需要識(shí)別的event。這其中主要有三種rc-default, rcX(x=0,1,...6,S。sysv-rc-conf這個(gè)工具里就顯示了0,1,...6,S這幾個(gè)級(jí)別)以及ttyX。這rc-default 就類(lèi)似于那大名鼎鼎的inittab文件,它就是設(shè)置默認(rèn)運(yùn)行級(jí)別的 [注:Ubuntu upstart中實(shí)際并沒(méi)有運(yùn)行級(jí)別的概念,這么稱(chēng)呼是為了init向后的兼容性]?,F(xiàn)在你應(yīng)該知道了ubuntu里沒(méi)有了inittab文件后該到哪里設(shè)置默認(rèn)運(yùn)行級(jí)別的了吧!cat rc-default一下吧!rcX文件是發(fā)生相應(yīng)運(yùn)行級(jí)別事件(可以注意到event這個(gè)詞在Ubuntu upstart里真是無(wú)處不見(jiàn)啊)時(shí),需要運(yùn)行程序的腳本,而ttyX則是設(shè)置偽終端數(shù)目的,也就是你Ctrl+Alt+F(1~6)調(diào)出的那個(gè)Console。我們以rc2為例,cat rc2:

start on runlevel 2
stop on runlevel [!2]
console output
script
set $(runlevel --set 2 || true)
if [ "$1" != "unknown" ]; then
PREVLEVEL=$1
RUNLEVEL=$2
export PREVLEVEL RUNLEVEL
fi
exec /etc/init.d/rc 2
end script

不去考慮細(xì)節(jié),只要注意到前兩行和倒數(shù)第二行就可以了。可以看到,rc2文件是定義在發(fā)生運(yùn)行級(jí)別2的時(shí)候所要執(zhí)行的東西,核心就是這句:exec /etc/init.d/rc 2。這樣,我們就可以自然地過(guò)渡到下一個(gè)重要的目錄,/etc/init.d/了。

你可以ls /etc/init.d/看一下里面的內(nèi)容,對(duì)它有個(gè)大致的了解。/etc/init.d/中存放的是服務(wù)(services)或者任務(wù)(tasks)的執(zhí)行腳本??梢赃@么說(shuō),只要你安裝了一個(gè)程序(特別是服務(wù)程序daemon),它可以在系統(tǒng)啟動(dòng)的時(shí)候運(yùn)行,那么它必定會(huì)在/etc/init.d/中有一個(gè)腳本文件。我們還回到上面的rc2文件,它執(zhí)行了一個(gè)exec /etc/init.d/rc 2的命令。也就是說(shuō),給/etc/init.d/rc腳本傳遞了一個(gè)參數(shù)"2",讓它執(zhí)行。我們仔細(xì)查看一下rc腳本(很長(zhǎng),耐心點(diǎn)),能看到這樣的一段:

# Now run the START scripts for this runlevel.
# Run all scripts with the same level in parallel
for s in /etc/rc$runlevel.d/S*

這說(shuō)明,當(dāng)給rc腳本傳遞一個(gè)數(shù)字參數(shù)"X"的時(shí)候,它在經(jīng)過(guò)一系列的設(shè)置后,將會(huì)開(kāi)始執(zhí)行/etc/rcX.d/下S開(kāi)頭的腳本。這就過(guò)渡到下一個(gè)目錄/etc/rcX.d/了。

進(jìn)入/etc/rcX.d/,ls -l /etc/rcX.d/看看有些什么內(nèi)容?哈哈,沒(méi)錯(cuò),都是一些到/etc/init.d/中腳本的符號(hào)鏈接。不同的是它們的開(kāi)頭加上了S和一個(gè)數(shù)字。熟悉原本init的人應(yīng)該知道,S表示在啟動(dòng)時(shí)運(yùn)行,數(shù)字則表示執(zhí)行的先后順序。

這樣一來(lái),Ubuntu upstart管理的ubuntu啟動(dòng)過(guò)程應(yīng)該就清楚了。梳理一下:1,內(nèi)核啟動(dòng)init 2,init找到/etc/event.d/rc-default文件,確定默認(rèn)的運(yùn)行級(jí)別(X) 3,觸發(fā)相應(yīng)的runlevel事件,開(kāi)始運(yùn)行/etc/event.d/rcX 4,rcX運(yùn)行/etc/init.d/rc,傳入?yún)?shù)X 5,/etc/init.d/rc腳本進(jìn)行一系列設(shè)置,***運(yùn)行相應(yīng)的/etc/rcX.d/中的腳本6,/etc/rcX.d/中的腳本按事先設(shè)定的優(yōu)先級(jí)依次啟動(dòng),直至***給出登錄畫(huà)面(啟動(dòng)X服務(wù)器和GDM)

關(guān)于Ubuntu中怎么利用upstart實(shí)現(xiàn)進(jìn)程管理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

當(dāng)前文章:Ubuntu中怎么利用upstart實(shí)現(xiàn)進(jìn)程管理
瀏覽地址:http://muchs.cn/article22/jopocc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站網(wǎng)站維護(hù)、全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站設(shè)計(jì)公司、定制網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)