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