ubuntu upstart 的基本概念

2021-06-29 06:20:04 字數 1222 閱讀 3478

相信不少ubuntu的新手玩家都嘗試過設定runlever進入字元模式但沒有成功。當初年少無知,找不到解決問題的頭緒,也沒有解決問題的動力

今天重新審視這個問題,有了新知

首先,runlevel之類的東西是提供給init程序使用,包括init.d以及類似的有著一堆詭異名字的指令碼,用於linux載入完成後啟動服務

那麼,問題就應該從init程式開始

問題來了,init已經不在是我們熟悉的那個init了,upstart是個什麼鬼?

事實上,sysv 的 init程式由於其過於古舊,越來越無法適應多核以及面向一般使用者的linux發行版,因此遭到廢棄。canonical公司的一名程式設計師寫了init的公升級版,upstart,理所自然地應用到了ubuntu上。

從man中,我們可以看到,upstart不在使用那一堆詭異的目錄,而是清爽簡介的/etc/init

那麼該目錄又有什麼?

可以看到,該目錄下是一堆以.conf格式命名的檔案。這些檔案可以看成init使用的bash指令碼的公升級版,具體的內容不去深究,即使不清楚具體語法的看下description基本都明白該指令碼做了些什麼。不得不說這是乙個巨大的進步。

問題來了,既然init不在使用,但是很顯然各種帶d的daemon程式依然是由bash指令碼啟動的,那麼這意味這upstart應該是對init相容的。事實上,該目錄下的rc.conf rcs.conf rc-sysinit.conf就是用來相容init的,包括對runlevel的處理,以及啟動指令碼。

重官方提供的cookbook上可以看到,upstart相比init最大的進步在於從原始的按順序執行指令碼(主要是因為某些服務的執行需要其它服務的支援,因此指令碼的執行必須是按照一定順序的),變成了基於條件的、非同步的、可並行的執行方式。即若滿足了某些條件(比如熱插拔硬體、某些指令碼執行完畢等),則執行可以執行的指令碼。通過這種方式,使得指令碼的執行順序控制變得簡單(之前的控制順序是由指令碼名字決定的,意味值如果某個指令碼發生了改變,會導致一系列指令碼的改變);同時支援多核帶來的效能提公升;更重要的是可以支援硬體的熱插拔。

但是upstart並不一定是未來init的代名詞。systemd也是init的另一種解決方案,但是這個專案非常的激進,有別於linux的傳統方式,使用了非常mac os風格的管理方式,招致批評的同時卻提供了更好的使用者體驗。據說ubuntu在不久的將來會拋棄自己的upstart選擇systemd,但這又是另乙個故事了。

ubuntu upstart啟動流程分析

簡介 最近做linux課程設計 核心裁剪和檔案系統定製 選擇了ubuntu10.10作為實驗的平台。不同的linux發行版,使用者態的初始化機制有所差別,ubuntu自從6.10版本之後就使用了較新的upstart機制來進行系統的初始化。upstart是一種基於事件驅動的服務啟動機制,可以使多個系統...

ubuntu upstart啟動流程分析

ubuntu自從6.10版本之後就使用了較新的upstart機制來進行系統的初始化。upstart是一種基於事件驅動的服務啟動機制,可以使多個系統任務在保持依賴關係的前提下併發啟動 據說這樣這樣啟動會比較快,理論上應當如此 使用upstart機制時,我們通過 etc init下的一系列 conf 配...

封基和開基的異同

封閉式 簡稱 封基 學名叫 契約型封閉式 開放式 簡稱 開基 學名叫 契約型開放式 相同點大致有 一 都是 管理公司的集合理財產品 二 都屬於面向社會公開募集 的範疇 三 都要執行 法 和規範的會計準則 四 都要按照資產淨值提取管理費 託管費 五 目前 分紅都不需要交納個人所得稅 歡迎補充 不同點有...