一、Linux操做系統的開機過程linux
從BIOS開始 → 進入Boot Loader → 加載系統內核 → 內核進行初始化 → 啓動初始化進程。併發
初始化進程做爲Linux系統的第一個進程,它須要完成Linux系統中相關的初始化工做,爲用戶提供合適的工做環境。紅帽RHEL 7系統已經替換掉了熟悉的初始化進程服務System V init,正式採用全新的systemd初始化進程服務。若是讀者以前學習的是RHEL 5或RHEL 6系統,可能會不習慣。systemd初始化進程服務採用了併發啓動機制,開機速度獲得了不小的提高。雖然systemd初始化進程服務具備不少新特性和優點,但目前仍是下面4個槽點。學習
二、systemd與System V init的區別以及做用spa
不管怎樣,RHEL 7系統選擇systemd初始化進程服務已是一個既定事實,所以也沒有了「運行級別」這個概念,Linux系統在啓動時要進行大量的初始化工做,好比掛載文件系統和交換分區、啓動各種進程服務等,這些均可以看做是一個一個的單元(Unit),systemd用目標(target)代替了System V init中運行級別的概念,這二者的區別如表1所示。操作系統
表1 systemd與System V init的區別以及做用rest
System V init運行級別code |
systemd目標名稱blog |
做用進程 |
0ci |
runlevel0.target, poweroff.target |
關機 |
1 |
runlevel1.target, rescue.target |
單用戶模式 |
2 |
runlevel2.target, multi-user.target |
等同於級別3 |
3 |
runlevel3.target, multi-user.target |
多用戶的文本界面 |
4 |
runlevel4.target, multi-user.target |
等同於級別3 |
5 |
runlevel5.target, graphical.target |
多用戶的圖形界面 |
6 |
runlevel6.target, reboot.target |
重啓 |
emergency |
emergency.target |
緊急Shell |
若是想要將系統默認的運行目標修改成「多用戶,無圖形」模式,可直接用ln命令把多用戶模式目標文件鏈接到/etc/systemd/system/目錄:
[root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/ system/default.target
三、RHEL 6系統中System V init命令與RHEL 7系統中systemctl命令的對比
若是有讀者以前學習過RHEL 6系統,或者已經習慣使用service、chkconfig等命令來管理系統服務,那麼如今就比較鬱悶了,由於在RHEL 7系統中是使用systemctl命令來管理服務的。表2和表3所示RHEL 6系統中System V init命令與RHEL 7系統中systemctl命令的對比,您能夠先大體瞭解一下,後續章節中會常常用到它們。
表2 systemctl管理服務的啓動、重啓、中止、重載、查看狀態等經常使用命令
System V init命令(RHEL 6系統) |
systemctl命令(RHEL 7系統) |
做用 |
service foo start |
systemctl start foo.service |
啓動服務 |
service foo restart |
systemctl restart foo.service |
重啓服務 |
service foo stop |
systemctl stop foo.service |
中止服務 |
service foo reload |
systemctl reload foo.service |
從新加載配置文件(不終止服務) |
service foo status |
systemctl status foo.service |
查看服務狀態 |
表3 systemctl設置服務開機啓動、不啓動、查看各級別下服務啓動狀態等經常使用命令
System V init命令(RHEL 6系統) |
systemctl命令(RHEL 7系統) |
做用 |
chkconfig foo on |
systemctl enable foo.service |
開機自動啓動 |
chkconfig foo off |
systemctl disable foo.service |
開機不自動啓動 |
chkconfig foo |
systemctl is-enabled foo.service |
查看特定服務是否爲開機自動啓動 |
chkconfig --list |
systemctl list-unit-files --type=service |
查看各個級別下服務的啓動與禁用狀況 |