Systemd 初始化進程

一、Linux操做系統的開機過程linux

從BIOS開始 → 進入Boot Loader → 加載系統內核 → 內核進行初始化 → 啓動初始化進程。併發

初始化進程做爲Linux系統的第一個進程,它須要完成Linux系統中相關的初始化工做,爲用戶提供合適的工做環境。紅帽RHEL 7系統已經替換掉了熟悉的初始化進程服務System V init,正式採用全新的systemd初始化進程服務。若是讀者以前學習的是RHEL 5或RHEL 6系統,可能會不習慣。systemd初始化進程服務採用了併發啓動機制,開機速度獲得了不小的提高。雖然systemd初始化進程服務具備不少新特性和優點,但目前仍是下面4個槽點。學習

  • 槽點1:systemd初始化進程服務的開發人員Lennart Poettering就任於紅帽公司,這讓其餘系統的粉絲很不爽。
  • 槽點2:systemd初始化進程服務僅僅可在Linux系統下運行,「拋棄」了UNIX系統用戶。
  • 槽點3:systemd接管了諸如syslogd、udev、cgroup等服務的工做,再也不甘心只作初始化進程服務。
  • 槽點4:使用systemd初始化進程服務後,RHEL 7系統變化太大,而相關的參考文檔很少,令用戶着實爲難。

二、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

查看各個級別下服務的啓動與禁用狀況

相關文章
相關標籤/搜索