教你學(xué)好Linux操作系統(tǒng)知識
最近很關(guān)注Linux操作系統(tǒng),說Linux操作系統(tǒng)怎么好,說Linux代碼公開,安全性高,價格便宜。大有windows要不行的架勢。本文介紹Linux下/etc/rc[S 0-6]目錄下的文件都是/etc/init.d/下面可執(zhí)行文件或腳本的鏈接。
如果對ARM有些了解,可能會發(fā)現(xiàn)一點(diǎn):ARM的絕對地址0x00000000處的那幾個中斷表,其處理方式與Linux對系統(tǒng)的不同狀態(tài)的處理有點(diǎn)相似之處。比如ARM遇到reset信號之后就會去執(zhí)行reset中斷向量(其實(shí)也是一個編號),而Linux遇到切換級別的信號(關(guān)機(jī),halt,重啟等信號),也會去執(zhí)行/etc/rc[0-6].d/目錄下的動作。由此,軟硬件設(shè)計可以相通相互借鑒?,F(xiàn)在簡略講講Linux的運(yùn)行級別相關(guān)知識。
除此之后,一般/etc下可能還有/etc/rc.local,/etc/rc.sysinit文件,一般/etc/rc.local默認(rèn)并不做什么實(shí)事,可能是系統(tǒng)留下的一個接口,供用戶添加系統(tǒng)啟動時執(zhí)行的動作,它一般會執(zhí)行在/etc/init.d/的后面,所以比較靠后。/etc/rc.sysinit在Redhat9.0里做的事比較多,有點(diǎn)類似執(zhí)行/etc/rcS.d/下面的動作。
系統(tǒng)執(zhí)行完init之后,會首先執(zhí)行/etc/rcS/下面的以S[0-9][0-9]init_script為命名的初始化(如果改為以K開頭,便不會被執(zhí)行了),執(zhí)行順序以S后面的兩位數(shù)字的由小到大的順序;
之后會去找/etc/inittab定義系統(tǒng)運(yùn)行級別的配置文件,根據(jù)initdefault指定的默認(rèn)運(yùn)行級別,而執(zhí)行/etc/rc[0-6].d/下的初始化。
ubuntu則沒有采用Linux傳統(tǒng)的這種方式,而換了另外一種方法,在執(zhí)行完/etc/rcS/下面的初始化后,去 /etc/event.d/rc-default里找運(yùn)行級別,這個腳本首先判斷從啟動內(nèi)核的參數(shù)命令行中尋找類似single的字串,如果找到,則定義運(yùn)行級別1,否則再去找/etc/inittab,沒有的話,則定義默認(rèn)級別為2(可能是因為ubuntu主要是面向個人PC的桌面電腦,所以沒有開啟全功能多用戶級別)。
添加一個服務(wù):sudo update-rc.d srv_name defaults 99
刪除一個服務(wù) :sudo update-rc.d srv_name remove
臨時重啟一個服務(wù):/etc/init.d/srv_name restart
臨時關(guān)閉一個服務(wù):/etc/init.d/srv_name stop
臨時啟動一個服務(wù):/etc/init.d/srv_name start
當(dāng)一個用戶從(例如)運(yùn)行級別 2 切換到運(yùn)行級別 3 的時候,/etc/rd2.d/S[0-9][0-9]init_file_name會首先按字母順序、然后以“stop”為第一個參數(shù)執(zhí)行運(yùn)行級別 3 的所有 K 腳本(/etc/rc3.d/K[0-9][0-9]init_script),再以“start”為第一個參數(shù)執(zhí)行運(yùn)行級別 3 的所有 S 腳本(/etc/rc3.d/S[0-9][0-9]init_script)。
可以通過runlevel命令查看系統(tǒng)當(dāng)前的運(yùn)行級別,telinit命令更改運(yùn)行級別。
通過本文對Linux操作系統(tǒng)介紹,希望對你有幫助。
【編輯推薦】