systemd 與 sysVinit 彩版對照表

jopen 10年前發布 | 21K 次閱讀 Systemd Linux

systemd 是一種新型init系統「譯者注:每個操作系統都有一個啟動程序,而Linux init是Linux系統操作中不可缺少的程序之一。所謂的init進程,它是一個由內核啟動的用戶級進程。內核自行啟動(已經被載入內存,開始運行,并 已初始化所有的設備驅動程序和數據結構等)之后,就通過啟動一個用戶級程序init的方式,完成引導進程。所以init始終是第一個進程(其進程編號始終 為1)」,最早在Fedora中使用「譯者注:真的嗎?不是Arch?」,經過調整適應了其它許多發行版,例如RedHat、Suse和CentOS。

歷史上,我們大部分人用過傳統的SysV init 初始化腳本,它通常情況下在/etc/rc.d/init.d/文件夾下。這些腳本調用守護進程二進制代碼,在后臺fork一個進程。

盡管shell腳本非常的靈活,但是很難實現像superviseing(監管)進程和并行執行命令這樣的任務。

通過對systemd的新式守護進程的介紹,我們發現systemd可以在runtime(運行時)更加簡單的監管和控制守護進程,并且簡化了監控的實現方式(implementation)。

systemctl命令是systemd團隊一個非常好的首創。

這個命令能夠顯示更多的詳細錯誤信息和包括啟動錯誤在內的服務運行時錯誤。systemd引入了一個新術語:cgroups(控 制組),它基本上是可被分層次安排的進程任務組。「譯者注:這里簡單介紹一下cgroup(control group)稱為Containers,Containers著眼于資源的分配,利用configfs作配置。它有兩個重要概念:第一是 subsystem,內核可以給進程提供的服務/資源;第二是container,一個進程組,成員共享同樣的一個或多個子系統分配限制。 Containers是分層次的,一個container可以hold多個container。它的可取之處是創建了一個資源分配的框架,其它開發者可以 利用這個框架去開發自己的資源分配patch,比如磁盤設備。」

如果僅僅通過原來的初始化系統,決定哪個進程是做什么的、屬于哪個用戶的變得越來越困難。

但是通過systemd,當一個進程派生其它進程時,這些子進程會被自動變成父進程控制組的成員,這樣一來就可以避免繼承的混亂。

systemd 與 sysVinit 彩版對照表

有許多新的運行在 rhel / centos 7.0 上的 systemd 命令可以替代 sysvinit 的對應命令。你也可以下載 本文的 PDF 版本


via: http://linoxide.com/linux-command/systemd-vs-sysvinit-cheatsheet/

作者:Bobbin Zachariah 譯者:szrlee 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!