linux系統啟動過程-指令碼啟動順序

來源:互聯網
上載者:User

1.系統啟動流程
Linux系統主要通過以下步驟啟動:
1、讀取MBR的資訊,啟動Boot Manager
Windows使用NTLDR作為Boot Manager,如果您的系統中安裝多個版本的Windows,您就需要在NTLDR中選擇您要進入的系統。
Linux通常使用功能強大,配置靈活的GRUB或者lilo作為Boot Manager
2、載入系統核心,啟動init進程
init進程是Linux的根進程,所有的系統進程都是它的子進程。
3、init進程讀取“/etc/inittab”檔案中的資訊,並進入預設的運行層級,按順序運行該運行層級對應檔案夾下的指令碼。指令碼通常以“start”參數啟動,並指向一個系統中的程式。
通常情況下,“/etc/rcS.d/”目錄下的啟動指令碼首先被執行,然後是“/etc/rcN.d/”目錄。例如您設定的運行層級為3,那麼它對應的啟動目錄為“/etc/rc3.d/”,最後啟動的指令碼是/etc/rc.local目錄
4、啟動登入管理器,等待使用者登入
Ubuntu系統預設使用GDM作為登入管理器,kde則是kdm,您在登入管理器介面中輸入使用者名稱和密碼後,便可以登入系統。(您可以在“/etc/rc3.d/”檔案夾中找到一個名為“S13gdm”的連結)
5.在使用者登入的時候執行sh指令碼的順序:每次登入的時候都會完全執行的
/etc/profile.d/file
/etc/profile
/etc/bashrc
/root/.bashrc
/root/.bash_profile

2.更改運行層級*
在“/etc/inittab”檔案中找到如下內容:
# The default runlevel.
id:2:initdefault:
這一行中的數字2,為系統的運行層級,預設的運行層級涵義如下:
0 關機
1 單使用者維護模式
2~5 多使用者模式
6 重啟

3.服務管理
更改啟動服務
在運行層級對應的檔案夾中,您可以看到許多檔案名稱以“S##”和“K##”起始的啟動指令碼連結。
例如:
/etc/rcS.d/S35mountall.sh 掛載檔案系統
/etc/rcS.d/S40networking 啟用網路支援
/etc/rc2.d/S13gdm 啟動登入管理器
/etc/rc2.d/S20makedev 建立裝置檔案
/etc/rc2.d/S23xinetd 啟動超級進程
init 進程將以“start”為參數,按檔案名稱順序執行所有以“S##”起始的指令碼。指令碼名稱中的數字越小,它將被越早執行。例如在“/etc/rc2.d/” 檔案夾中,“S13gdm”檔案名稱中的數字小於“S23xinetd”,“S13gdm”將比“S23xinetd”先執行。
如果一個指令碼連結,以“K##”起始,表示它將以“stop”參數被執行。如果相應服務沒有啟動,則不執行該指令碼。
例如:
/etc/rc2.d/K20powernowd 針對某種硬體的電源管理支援
如果您想禁止某一服務在啟動時自動運行,您可以將相應運行層級中的指令碼由“S##xxx”重新命名為“K##xxx”。
手動控制服務
您也可以手動運行帶有以下參數的啟動指令碼,來控制系統服務。
start 啟動
stop 停止
restart 重啟
例如:
/etc/rc2.d/K20powernowd start
有時您並不清楚當前運行層級,該運行層級下未必有相應指令碼;而且此類指令碼的前三位字元並不固定,不便於記憶。這時,您可以直接使用“/etc/init.d /”檔案夾中的啟動指令碼(“/etc/rcX.d/”中的啟動指令碼連結到“/etc/init.d/”檔案夾下相應指令碼),這也是我們向您推薦的方式。
例如:
/etc/init.d/powernowd start
Tips:以上命令的位置並沒有包含在環境變數的搜尋路徑中,所以要輸入完整路徑。

 

 

Ubuntu10.10 裡面的環境設定檔

 

(1)/etc/enviroment 是系統的環境變數。

(2)/etc/profile: 是所有使用者的環境變數。當使用者第一次登入時,該檔案被執行. 並從/etc/profile.d目錄的設定檔中搜集shell的設定。

(3)/etc/bashrc: 為每一個運行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取。

(4)~/.bash_profile: 每個使用者都可使用該檔案輸入專用於自己使用的shell資訊,當使用者登入時,該檔案僅僅執行一次!預設情況下,他設定一些環境變數,執行使用者的.bashrc檔案。

(5)~/.bashrc: 該檔案包含專用於你的bash shell的bash資訊,當登入時以及每次開啟新的shell時,該該檔案被讀取。

(6) ~/.bash_logout:當每次退出系統(退出bash shell)時,執行該檔案. 另外,/etc/profile中設定的變數(全域)的可以作用於任何使用者,而~/.bashrc等中設定的變數(局部)只能繼承 /etc/profile中的變數,他們是"父子"關係。

(7)~/.bash_profile 是互動式、login 方式進入 bash 啟動並執行~/.bashrc 是互動式 non-login 方式進入 bash 啟動並執行通常二者設定大致相同,所以通常前者會調用後者。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.