Linux upstart啟動方式詳解

Dus發表於2015-02-18

   Ubuntu從6.10開始逐步用Upstart()代替原來的SysVinit進行服務程式的管理。RHEL(CentOS)也都從版本6開始轉用Upstart代替以往的init.d/rcX.d的線性啟動方式。

  SysVinit守護程式(sysvinit軟體包)是一個基於執行級別的系統,它使用執行級別(單使用者、多使用者以及其他更多級別)和連結(位於/etc /rc?.d目錄中,分別連結到/etc/init.d中的init指令碼)來啟動和關閉系統服務。SysV啟動是線性、順序的。一個S20的服務必須要等待S19啟動完成才能啟動,如果一個啟動要花很多時間,那麼後面的服務就算完全無關,也必須要等。

  UpStart(Upstart init daemon)是基於事件的啟動系統,它使用事件來啟動和關閉系統服務。Upstart是是並行的,只要事件發生,服務可以併發啟動。這種方式無疑要優越得多,因為它可以充分利用現在計算機多核的特點,大大減少啟動所需的時間。

  Upstart是基於事件的,當系統中的什麼情況發生變化時,它會執行某個特定的程式。這裡被執行的程式多半是用來啟動或終止服務的指令碼。這個配置方式和System V在系統進入某個執行級別的時候執行init指令碼的連結的概念實際上是非常類似的。只不過Upstart更加靈活一些,Upstart不僅能在執行級別改變的時候啟動或終止服務,也能在接收到系統發生其他改變的資訊的時候啟動或終止服務。這些系統的改變被稱為“事件”。例如,當Upstart從udev接收到執行時檔案系統載入、印表機安裝或其他類似的裝置新增或刪除的資訊,並採取相應的行動。Upstart也可以在系統啟動、關閉或某個任務狀態改變的時候啟動或關閉服務。

相關文章