在現(xiàn)代Linux系統(tǒng)中,systemd是一種最常用的系統(tǒng)與服務管理器。
systemd的主要作用是在系統(tǒng)啟動時初始化并管理系統(tǒng)進程、服務、硬件、網(wǎng)絡等系統(tǒng)資源,并提供服務依賴管理、日志管理等功能。
同時,systemd還提供了一些工具,幫助用戶更方便地管理系統(tǒng)服務和其他系統(tǒng)資源。
在Linux系統(tǒng)中,systemd 的存在可以通過檢查1號進程來確認:
首先檢查系統(tǒng)中的1號進程,會發(fā)現(xiàn)它是系統(tǒng)的init進程,它負責初始化系統(tǒng)并啟動其他進程。
g@GitExp:~$ ps aux | grep init
root 1 0.0 0.1 225472 9344 ? Ss 12月23 0:07 /sbin/init splash
在Linux發(fā)展歷程中,不同的Linux發(fā)行版本使用的初始化系統(tǒng)有差別,但是這些初始化程序都是作為1號進程來運行,因此我們可以詳細檢查我們的1號進程是否由systemd提供。
檢查init的連接:
g@GitExp:~$ ll /sbin/init
lrwxrwxrwx 1 root root 20 3月 2 2023 /sbin/init -> /lib/systemd/systemd*
在現(xiàn)代Linux 系統(tǒng)中,systemd 作為系統(tǒng)的初始化系統(tǒng),通常會取代傳統(tǒng)的 init。但是,系統(tǒng)的 init 進程有時仍然會以 /sbin/init 作為啟動的命令出現(xiàn),并軟連接指向?qū)嶋H地址。
也可以直接檢查:
g@GitExp:~$ ps -p 1
PID TTY TIME CMD
1 ? 00:00:07 systemd
systemd具有許多現(xiàn)代化的特點和優(yōu)勢,使其成為目前大多數(shù)Linux系統(tǒng)中首選的管理器。
(1)Unit 機制:systemd使用unit配置文件來管理服務、掛載點、設備等系統(tǒng)資源,它是systemd其他功能的基礎機制。
(2)服務依賴管理:在unit機制下,通過服務依賴,可以精確控制服務的啟動順序。
(3)并行啟動服務:systemd支持并行啟動多個服務,而不是像傳統(tǒng)init系統(tǒng)那樣逐個依次啟動,能夠顯著減少系統(tǒng)啟動的時間。
(4)進程監(jiān)控與自動重啟:systemd支持監(jiān)控進程的運行狀態(tài),并能夠在服務崩潰時自動重啟服務。這為系統(tǒng)提供了更高的穩(wěn)定性。
(5)資源控制:systemd可以利用 Linux 內(nèi)核的cgroups功能,控制系統(tǒng)資源的使用,如 CPU、內(nèi)存、磁盤 I/O 等??梢愿玫胤峙湎到y(tǒng)資源,避免某個進程占用過多資源導致系統(tǒng)不穩(wěn)定。
(6)日志管理:systemd包含了一個內(nèi)置的日志系統(tǒng)journald,用于收集系統(tǒng)和服務的日志。通過journalctl命令可以方便地查看和管理日志信息,并且支持日志過濾和搜索。
(7)統(tǒng)一管理接口:systemd提供了一個統(tǒng)一的命令行工具systemctl,用于管理系統(tǒng)服務、啟動、停止、重啟等操作。
(8)目標機制:systemd使用目標(target)來管理系統(tǒng)狀態(tài)。例如,multi-user.target 表示多用戶模式,相當于傳統(tǒng)的運行級別 3。通過目標機制,管理員可以靈活控制系統(tǒng)的運行狀態(tài)。
探討了systemd的特點后,我們就能夠大概了解,為什么systemd可以在眾多Linux的初始化程序中脫穎而出。
除了systemd,還有一些常用的初始化程序,例如SysV Init、Upstart等。
SysV Init: SysV Init最早出現(xiàn)在Unix系統(tǒng)中,后來也成為了初代Linux系統(tǒng)的標準初始化系統(tǒng)。但是因為串行啟動速度慢、發(fā)雜的腳本化管理、沒有依賴機制導致被慢慢主流淘汰。
Upstart:Upstart在SysV Init的基礎上引入了事件驅(qū)動模型、并支持并發(fā)啟動,出現(xiàn)后迅速大面積替代了 SysV Init,但是后來因為與systemd競爭失敗并且缺少后續(xù)維護,慢慢也被主流淘汰。
systemd: sysmted因支持并行啟動和依賴管理,集成日志和資源控制等功能,并提供了統(tǒng)一管理的工具,讓它成為了目前Linux系統(tǒng)的主流管理器,并大面積使用至今。
(1)學習困難:由于 systemd 功能復雜,使用者可能需要更多的時間來學習如何配置和管理 systemd 服務。
(2)過于復雜的設計:有些用戶認為systemd的設計過于龐大和復雜,尤其是其“一體化”設計,可能導致不必要的功能和增加了系統(tǒng)的復雜性。
(3)與傳統(tǒng)系統(tǒng)兼容不完美:雖然目前大部分Linux發(fā)行版本都使用systemd,并且systemd一直在致力于提升兼容性問題,但因為復雜的涉及,可能會導致在Linux中移植較老的服務或傳統(tǒng)init服務到systemd時候會遇到很多兼容問題。
所以systemd能夠脫穎而出是因為它除了優(yōu)秀的初始化機制,還提供了其他初始化系統(tǒng)不具備的功能和工具,并且隨著時間的推移,systemd 的優(yōu)勢將更加顯著。但是對用戶來說,理解其復雜性以及它本身潛在的劣勢依然還是一個挑戰(zhàn)。
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多通信技術資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進行了解,也可以直接撥打400電話咨詢技術專員!
相關閱讀:
1、【服務器】Nginx Proxy Manager申請cloudflare泛域名教程