2016年7月25日 星期一

執行級別(Run Level)

Linux或是類UNIX系統開機時,系統會去判定開機時的執行級別 runlevel。在不同的級別下,會啟動不一樣的服務。一般來說有7個級別0, 1, 2-5, 6, S,欲啟動的服務放在/etc下面的這些目錄(以下的說明參考bizpro寫的《Linux Pi的奇幻旅程(16)-大改造(續)》):
  • rc0.d:負責關機的運作
  • rc1.d:維修模式
  • rc2.d:多人文字模式, 沒有圖形界面
  • rc3.d:多人文字模式, 沒有圖形界面, 具有網路
  • rc4.d:保留未使用
  • rc5.d:圖形界面
  • rc6.d:負責重開機的運作
  • rcS.d:單人模式(single user mode)
要查詢系統當前的執行級別,任選下面兩個指令
  • runlevel
  • who -r
而預設的run level則是存放在/etc/inittab裡面。在檔案最前面幾行看到
  • id:2:initdefault
意思就是預設啟動的run level是2,會去執行/etc/rc2.d裡面的服務。在這個資料夾中的服務都是用symbolic link連結到/etc/init.d/下面的服務,分成下面兩類:
  • S開頭:啟動服務,根據S後面接的數字由小而大依序啟動
  • K開頭:關閉服務,根據K後面接的數字由大而小依序關閉

有兩招可以開啟或是關閉服務,第一種是用指令update-rc.d
  • update-rc.d rc.local enable 2
  • update-rc.d rc.local disable 2
第一行是在執行級別2裡面增加一項rc.local這項服務,第二行則是關閉此服務

另外一招則是使用指令chkconfig,參考Derek寫的《Chkconfig參數用法》
  1. chkconfig --list
  2. chkconfig --list httpd
  3. chkconfig --add httpd
  4. chkconfig --del httpd
  5. chkconfig --level httpd 2345 on
  6. chkconfig --level httpd 2345 off
以上都是對於httpd這個服務的操作,意思如下
  1. 列出系統上面所有的服務(在/etc/init.d/下面的服務)
  2. 列出httpd在不同run level下是否會執行
  3. 增加httpd這個服務(不常用)
  4. 移除httpd這個服務(不常用)
  5. 在執行級別2, 3, 4, 5下開啟httpd
  6. 在執行級別2, 3, 4, 5下關閉httpd
_EOF_

沒有留言:

張貼留言