在類Unix 的計算機操做系統中,Init(初始化的簡稱)是在計算機啓動的第一個進程。nginx
Init 是一個守護進程,它持續運行,直到系統關閉。它是全部其餘進程的直接或間接的父進程。操作系統
由於 init 的參數全在/etc/init.d
目錄下,因此使用 init 啓動一個服務,應該這樣作:設計
$ sudo /etc/init.d/nginx start
service是一個運行System V init
的腳本命令。System V init 是/etc/init.d
目錄下的參數。code
service 是去/etc/init.d
目錄下執行相關程序,服務配置文件的存放目錄就是/etc/init.d
。進程
使用 service 啓動一個服務,應該這樣作:it
$ service nginx start
能夠理解成 service 就是init.d
的一種實現方式。因此與 init 並無什麼區別。io
這兩種方式均有以下缺點:配置
- 啓動時間長。init 進程是串行啓動,只有前一個進程啓動完,纔會啓動下一個進程。
- 啓動腳本複雜。init進程只是執行啓動腳本,無論其餘事情。腳本須要本身處理各類狀況,這每每使得腳本變得很長。
Systemd 就是爲了解決這些問題而誕生的。它包括 System and Service Manager,爲系統的啓動和管理提供一套完整的解決方案。date
Systemd 是Linux 系統中最新的初始化系統(init),它主要的設計目的是克服 System V init
固有的缺點,提升系統的啓動速度。service
Systemd 這個名字的含義,就是它要守護整個系統。使用了 Systemd,就不須要再用 init 了。
Systemd 取代了initd(initd 的PID 是0) ,成爲系統的第一個進程(Systemd 的PID 是1),其餘進程都是它的子進程。
Systemd 的優勢是功能強大,使用方便,缺點是體系龐大,很是複雜。
查看Systemd 的版本信息:
$ systemctl --version
Systemd 並非一個命令,而是一組命令,涉及到系統管理的方方面面。
systemctl是 Systemd 的主命令,用於管理系統。
hostnamectl用於管理當前主機設置。
localectl用於管理本地化設置。
timedatectl用於管理當前時區設置。