Linux運行級別
Linux系統任何時候都運行在一個指定的運行級上,並且不同的運行級的程序和服務都不同,所要完成的工作和要達到的目的都不同,系統可以在這些運行級之間進行切換,以完成不同的工作。
運行級別(Runlevel)指的是Unix或者linux等類Unix操作系統下不同的運行模式。
運行級別通常分為7等,分別是從0到6,但如果必要的話也可以更多。
例如在大多數Linux操作系統下一共有如下6個典型的運行級別:
0 停機 1 單用戶,Does not configure network interfaces, start daemons, or allow non-root logins 2 多用戶,無網絡連接 Does not configure network interfaces or start daemons 3 多用戶,啟動網絡連接 Starts the system normally. 4 用戶自定義 5 多用戶帶圖形界面 6 重啟
查看當前系統的運行級別可以使用命令runlevel
runlevel
切換運行級別,執行命令:
init [0123456Ss]
( 即在 init 命令后跟一個參數,此參數是要切換到的運行級的運行級代號,如:用init 0命令關機;用init 6命令重新啟動。)
更詳細的Linux運行級別研究,參考:http://www.cnblogs.com/EasonJim/p/7163069.html
Linux系統主要啟動步驟
1. 讀取MBR的信息,啟動Boot Manager,Windows使用NTLDR作為Boot Manager,如果您的系統中安裝多個版本的Windows,您就需要在NTLDR中選擇您要進入的系統。Linux通常使用功能強大,配置靈活的GRUB作為Boot Manager。 2. 加載系統內核,啟動init進程,init進程是Linux的根進程,所有的系統進程都是它的子進程。 3. init進程讀取/etc/inittab文件中的信息,並進入預設的運行級別,按順序運行該運行級別對應文件夾下的腳本。腳本通常以start參數啟動,並指向一個系統中的程序。通常情況下,/etc/rcS.d/目錄下的啟動腳本首先被執行,然后是/etc/rcN.d/目錄。例如您設定的運行級別為3,那么它對應的啟動目錄為/etc/rc3.d/。 4. 根據/etc/rcS.d/文件夾中對應的腳本啟動X Window服務器xorg,X Window為Linux下的圖形用戶界面系統。 5. 啟動登錄管理器,等待用戶登錄,Ubuntu系統默認使用GDM作為登錄管理器,您在登錄管理器界面中輸入用戶名和密碼后,便可以登錄系統。(您可以在/etc/rc3.d/文件夾中找到一個名為S13gdm的鏈接)
詳細的啟動過程,參考:http://www.debianadmin.com/the-lniux-boot-process-explained.html
Ubunto中的運行級別
在Debian Linux中2-5這四個運行級別都集中在級別2上。這個級別也是系統預設的正常運行級別。(注:對於這些運行級別我們不必太過糾結與到底什么意思,只需要知道在Debian/Ubuntu(Ubuntu是Debian的分支)Linux中默認都是在級別(Runlevel)2啟動的)
在Debian Linux中,下列路徑對應不同的運行級別。當系統啟動時,通過其中的腳本文件來啟動相應的服務。
/etc/rc0.d Run level 0 /etc/rc1.d Run level 1 /etc/rc2.d Run level 2 /etc/rc3.d Run level 3 /etc/rc4.d Run level 4 /etc/rc5.d Run level 5 /etc/rc6.d Run level 6
下面我們去/etc/目錄下尋找這些目錄,在終端中輸入
說明:對於以K開頭的文件,系統將終止對應的服務; 對於以S開頭的文件,系統將啟動對應的服務;
現在對於Debian/Ubuntu Linux的啟動過程大家應該有所了解,總結以下:
在/etc/rc0.d~rc6.d目錄下存放的分別是運行在0~6個運行級時要啟動的服務有關的文件,由於Ubuntu默認是在runlevel 2啟動的,那么我們只需要修改rc2.d中的文件,從而禁止某些服務啟動,例如apache2。
回顧剛才/etc/rc2.d目錄下的文件可以發現與apache2有關的文件是S91apache2。
我們查看以下apache的文件屬性:
而之前簡單介紹過以S開頭的文件,系統將啟動對應的服務。
查找以下apache在其他運行級別下的狀態:
我們會發現apache在運行級別2、3、4之下都是開機啟動。
所以我們要做的是把S91apache2修改成以K******,但是我們並不知道應該修改成多少,這里我們需要借助一個管理工具進行管理,即sysv-rc-conf。
sysv-rc-conf是一個服務管理程序,其它相似的軟件有chkconfig、rcconf等。
安裝sysv-rc-conf
在Ubuntu下用apt-get安裝:
sudo apt-get install sysv-rc-conf
運行
sudo sysv-rc-conf
第一行service后面是運行級別,有1,2,3,4,5,0,6,S,與之前介紹的運行級別基本符合,最后一項S為單用戶不配置網絡接口或啟動后台進程。
圖中打X的即表示運行在對應Runlevel時開機啟動的服務,這里我們可以看到apache2在Runlevel2,3,4,均為開機啟動。
對應到之前/etc/rc2.d~/etc/rc5.d目錄下均為S91apache2文件,再次驗證了之前的內容。
將光標移動到apache2那行的第2列,按空格進行將啟動項反選,按Q退出之后配置即完成。
現在我們再來看一下/etc/rc2.d/目錄下的內容:
ls /etc/rc2.d
現在已經出現了K09apache2文件,而之前的S91apache2文件不在了,到這里配置成功。
重啟之后查看apache服務運行狀態
service apache2 status
說明:其實上面的測試不太正確,我在Ubuntu 16.04的系統上測試了apache2的服務停止,只有把服務在全部運行級別上都不選擇,才能開機不啟動apache2,單獨把2級別取消,而3~5級別的保持開啟,是會啟動apache2服務的;也就是說運行級別從小到大依次運行。也就是說運行到5級別時,就會經過2級別。而且,在Ubuntu 16.04的系統中,不再是以2為默認級別,如果使用runlevel輸出級別,會出現N 5級別。
關於為什么Ubuntu系統默認級別為2的研究,參考:http://www.cnblogs.com/EasonJim/p/7168190.html
常見的系統服務信息
1 acpi-support 高級電源管理支持 2 acpid acpi 守護程序.這兩個用於電源管理,非常重要 3 alsa 聲音子系統 4 alsa-utils 5 anacron cron 的子系統,將系統關閉期間的計划任務,在下一次系統運行時執行。 6 apmd acpi 的擴展 7 atd 類似於 cron 的任務調度系統。建議關閉 8 binfmt-support 核心支持其他二進制的文件格式。建議開啟 9 bluez-utiles 藍牙設備支持 10 bootlogd 啟動日志。開啟它 11 cron 任務調度系統,建議開啟 12 cupsys 打印機子系統。 13 dbus 消息總線系統(message bus system)。非常重要 14 dns-clean 使用撥號連接時,清除 dns 信息。 15 evms 企業卷管理系統(Enterprise Volumn Management system) 16 fetchmail 郵件用戶代理守護進程,用於收取郵件 17 gdm gnome 登錄和桌面管理器。 18 gdomap 19 gpm 終端中的鼠標支持。 20 halt 別動它。 21 hdparm 調整硬盤的腳本,配置文件為 /etc/hdparm.conf。 22 hibernate 系統休眠 23 hotkey-setup 筆記本功能鍵支持。支持類型包括: HP, Acer, ASUS, Sony,Dell, 和 IBM。 24 hotplug and hotplug-net 即插即用支持,比較復雜,建議不要動它。 25 hplip HP 打印機和圖形子系統 26 ifrename 網絡接口重命名腳本。如果您有十塊網卡,您應該開啟它 27 inetd 在文件 /etc/inetd.conf 中,注釋掉所有你不需要的服務。如果該文件不包含任何服務,那關閉它是很安全的。 28 klogd 重要。 29 linux-restricted-modules-common 受限模塊支持。 30 /lib/linux-restricted-modules/ 文件夾中的模塊為受限模塊。例如某些驅動程序,如果您沒有使用受限模塊,就不需要開啟它。 31 lvm 邏輯卷管理系統支持。 32 makedev 創建設備文件,非常重要。 33 mdamd 磁盤陣列 34 module-init-tools 從/etc/modules 加載擴展模塊,建議開啟。 35 networking 網絡支持。按 /etc/network/interfaces 文件預設激活網絡,非常重要。 36 ntpdate 時間同步服務,建議關閉。 37 pcmcia pcmcia 設備支持。 38 powernowd 移動 CPU 節能支持 39 ppp and ppp-dns 撥號連接 40 readahead 預加載庫文件。 41 reboot 別動它。 42 resolvconf 自動配置 DNS 43 rmnologin 清除 nologin 44 rsync rsync 守護程序 45 sendsigs 在重啟和關機期間發送信號 46 single 激活單用戶模式 47 ssh ssh 守護程序。建議開啟 48 stop-bootlogd 在 2,3,4,5 運行級別中停止 bootlogd 服務 49 sudo 檢查 sudo 狀態。重要 50 sysklogd 系統日志 51 udev & udev-mab 用戶空間 dev 文件系統(userspace dev filesystem)。重要 52 umountfs 卸載文件系統 53 urandom 隨機數生成器 54 usplash 開機畫面支持 55 vbesave 顯卡 BIOS 配置工具。保存顯卡的狀態 56 xorg-common 設置 X 服務 ICE socket。 57 adjtimex 調整核心時鍾的工具 58 dirmngr 證書列表管理工具,和 gnupg 一起工作。 59 hwtools irqs 優化工具 60 libpam-devperm 系統崩潰之后,用於修理設備文件許可的守護程序。 61 lm-sensors 板載傳感器支持 62 mdadm-raid 磁盤陳列管理器 63 screen-cleanup 清除開機屏幕的腳本 64 xinetd 管理其他守護進程的一個 inetd 超級守護程序
參考:
http://blog.csdn.net/gatieme/article/details/45251389(以上內容轉自此篇文章)
http://www.linuxidc.com/Linux/2012-10/73123p2.htm
http://baike.baidu.com/item/sysv-rc-conf(以上大部分內容來自百度百科)