Linux init service systemd 的區別與關係

init

在類Unix 的計算機操做系統中,Init(初始化的簡稱)是在計算機啓動的第一個進程。nginx

Init 是一個守護進程,它持續運行,直到系統關閉。它是全部其餘進程的直接或間接的父進程。操作系統

由於 init 的參數全在/etc/init.d目錄下,因此使用 init 啓動一個服務,應該這樣作:設計

$ sudo /etc/init.d/nginx start

service

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

這兩種方式均有以下缺點:配置

  1. 啓動時間長。init 進程是串行啓動,只有前一個進程啓動完,纔會啓動下一個進程。
  2. 啓動腳本複雜。init進程只是執行啓動腳本,無論其餘事情。腳本須要本身處理各類狀況,這每每使得腳本變得很長。

systemd

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 進行系統管理

Systemd 並非一個命令,而是一組命令,涉及到系統管理的方方面面。

systemctl是 Systemd 的主命令,用於管理系統。

hostnamectl用於管理當前主機設置。

localectl用於管理本地化設置。

timedatectl用於管理當前時區設置。

相關文章
相關標籤/搜索