systemd 是一種新型init系統「譯者注:每個操作系統都有一個啟動程序,而Linux init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啟動一個用戶級程序init的方式,完成引導進程。所以init始終是第一個進程(其進程編號始終為1)」,最早在Fedora中使用「譯者注:據維基百科資料:http://en.wikipedia.org/wiki/Systemd#Adoption,最早使用 systemd 的是gentoo,最早使用並成為默認 init system 的是openSUSE。」,經過調整適應了其它許多發行版,例如RedHat、Suse和CentOS。
歷史上,我們大部分人用過傳統的SysV init 初始化腳本,它通常情況下在/etc/rc.d/init.d/文件夾下。這些腳本調用守護進程二進制代碼,在後台fork一個進程。
Linux 引導方式systemd upstart sysV http://www.linuxidc.com/Linux/2014-01/95555.htm
為什麼systemd會被如此迅速的采用? http://www.linuxidc.com/Linux/2014-08/105789.htm
盡管shell腳本非常的靈活,但是很難實現像superviseing(監管)進程和並行執行命令這樣的任務。
通過對systemd的新式守護進程的介紹,我們發現systemd可以在runtime(運行時)更加簡單的監管和控制守護進程,並且簡化了監控的實現方式(implementation)。
systemctl命令是systemd團隊一個非常好的首創。
這個命令能夠顯示更多的詳細錯誤信息和包括啟動錯誤在內的服務運行時錯誤。systemd引入了一個新術語:cgroups(控制組),它基本上是可被分層次安排的進程任務組。「譯者注:這裡簡單介紹一下cgroup(control group)稱為Containers,Containers著眼於資源的分配,利用configfs作配置。它有兩個重要概念:第一是subsystem,內核可以給進程提供的服務/資源;第二是container,一個進程組,成員共享同樣的一個或多個子系統分配限制。Containers是分層次的,一個container可以hold多個container。它的可取之處是創建了一個資源分配的框架,其它開發者可以利用這個框架去開發自己的資源分配patch,比如磁盤設備。」
如果僅僅通過原來的初始化系統,決定哪個進程是做什麼的、屬於哪個用戶的變得越來越困難。
但是通過systemd,當一個進程派生其它進程時,這些子進程會被自動變成父進程控制組的成員,這樣一來就可以避免繼承的混亂。
有許多新的運行在 rhel / centos 7.0 上的 systemd 命令可以替代 sysvinit 的對應命令(見http://www.linuxidc.com/Linux/2014-08/105975.htm)。你也可以下載 本文的 PDF 版本。
------------------------------------------分割線------------------------------------------
免費下載地址在 http://linux.linuxidc.com/
用戶名與密碼都是www.linuxidc.com
具體下載目錄在 /2014年資料/9月/11日/systemd 與 sysVinit 彩版對照表
下載方法見 http://www.linuxidc.com/Linux/2013-07/87684.htm
------------------------------------------分割線------------------------------------------