中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Ubuntu中怎么利用upstart實現進程管理

發布時間:2021-07-13 14:03:31 來源:億速云 閱讀:213 作者:Leah 欄目:系統運維

這篇文章將為大家詳細講解有關Ubuntu中怎么利用upstart實現進程管理,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

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

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

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

前三個是應用程序(注意哦,它們都不是shell腳本),可以理解為是由內核調用的。關于它們的功能,從manpage查看就可以了。我們的重點是后面給出的三個目錄。

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

不去考慮細節,只要注意到前兩行和倒數第二行就可以了。可以看到,rc2文件是定義在發生運行級別2的時候所要執行的東西,核心就是這句:exec /etc/init.d/rc 2。這樣,我們就可以自然地過渡到下一個重要的目錄,/etc/init.d/了。

你可以ls /etc/init.d/看一下里面的內容,對它有個大致的了解。/etc/init.d/中存放的是服務(services)或者任務(tasks)的執行腳本。可以這么說,只要你安裝了一個程序(特別是服務程序daemon),它可以在系統啟動的時候運行,那么它必定會在/etc/init.d/中有一個腳本文件。我們還回到上面的rc2文件,它執行了一個exec /etc/init.d/rc 2的命令。也就是說,給/etc/init.d/rc腳本傳遞了一個參數"2",讓它執行。我們仔細查看一下rc腳本(很長,耐心點),能看到這樣的一段:

# 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*

這說明,當給rc腳本傳遞一個數字參數"X"的時候,它在經過一系列的設置后,將會開始執行/etc/rcX.d/下S開頭的腳本。這就過渡到下一個目錄/etc/rcX.d/了。

進入/etc/rcX.d/,ls -l /etc/rcX.d/看看有些什么內容?哈哈,沒錯,都是一些到/etc/init.d/中腳本的符號鏈接。不同的是它們的開頭加上了S和一個數字。熟悉原本init的人應該知道,S表示在啟動時運行,數字則表示執行的先后順序。

這樣一來,Ubuntu upstart管理的ubuntu啟動過程應該就清楚了。梳理一下:1,內核啟動init 2,init找到/etc/event.d/rc-default文件,確定默認的運行級別(X) 3,觸發相應的runlevel事件,開始運行/etc/event.d/rcX 4,rcX運行/etc/init.d/rc,傳入參數X 5,/etc/init.d/rc腳本進行一系列設置,***運行相應的/etc/rcX.d/中的腳本6,/etc/rcX.d/中的腳本按事先設定的優先級依次啟動,直至***給出登錄畫面(啟動X服務器和GDM)

關于Ubuntu中怎么利用upstart實現進程管理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉门市| 安化县| 甘孜县| 和龙市| 松潘县| 贡觉县| 平度市| 隆化县| 濮阳县| 青龙| 永康市| 波密县| 大石桥市| 红安县| 卢龙县| 龙江县| 鹰潭市| 安顺市| 安龙县| 定结县| 德格县| 洛扎县| 新源县| 通州市| 宁城县| 新平| 镇巴县| 渭南市| 秭归县| 麻江县| 双江| 文登市| 伊金霍洛旗| 德格县| 土默特左旗| 承德县| 密云县| 佛山市| 桂阳县| 武定县| 靖江市|