系統管理-系統啓動

upstart的啓動方式

upstart的特色

upstart解決了以前提到的sysvinit的缺點,採用時間驅動模型,upstart能夠:shell

更快地啓動系統
當新硬件被發現時動態啓動服務
硬件被拔除時動態中止服務
這些特色使得upstart能夠很好地應用在桌面或者便攜式系統中,處理這些系統中的動態硬件插拔特性

upstart啓動過程:centos

系統通電後運行GRUB載入內核。內核執行硬件初始化和內核自身初始化。在內核初始化最後,內核將啓動pid爲1的init進程,即upstart進程。服務器

upstart進程在執行了一些自身的初始化工做後,當即發出「starup」事件。上圖中的紅色箭頭表示事件,能夠在左上方看到「startup事件」。網絡

全部依賴於「startup」事件的工做被觸發,其中最重要的是mountall,mountall任務負責掛載系統中須要使用的文件系統。完成相應的工做後,mount任務會發出如下dom

事件:local-filesystem,virtual-filesystem,all-swapsssh

 此時,任務rc-sysinit會被觸發,由於rc-sysinit的start on 條件以下:socket

start on filesystem and net-device-up IFACE=io

任務rc-sysinit調用telinit,telinit、任務會發出runlevel事件,觸發執行/etc/init/rc.conf。rc.conf執行/etc/rc$.d/目錄下的全部腳本,和sysvinit很是類似。centos7

瞭解systemd啓動方式

systemd簡介spa

系統啓動和服務器進程是由systemd系統和服務管理器進行管理。此程序提供了一種方式,能夠在啓動時和運行中的系統上激活系統資源,服務器守護進程和其它進程
守護進程是在執行各類任務的後臺等待或者運行的進程,爲了監聽連接,收回進程時候socket,socket能夠由守護進程建立,或與守護進程分離,而且可能由另外一個進程建立,隨後在客戶端創建鏈接時經過socket傳遞到守護進程
服務一般指定的是一個或者多個守護進程,單啓動或中止一個服務可能會對系統的狀態進行一次更改,不會留下守護進程以後繼續運行。

在centos7中,pid屬於systed這一個新的init系統,systemd提供了幾項新的功能:操作系統

並行化功能,它可提升系統的啓動速度
按需啓動守護進程,而不須要單獨的服務
自動管理服務依賴關係,能夠方式長時間超時,
利用Linux cgroup一塊兒跟蹤相關進程的方式
在系統啓動過程當中要設計多個不一樣的組件,按下開機按鈕後,首先BIOS/UEFI作最基本的硬件自檢與初始化,
而後加載預設/手動選擇的磁盤/網絡上的引導加載器,引導加載器進一步從磁盤/網絡上加載操做系統內核
對於Linux來講,內核將會解壓一個initrd鏡像
並執行由指定的init程序,以尋找並掛載根文件系統
完成根文件系統的掛載以後,內核啓動指定的init程序以及管理系統的控制權
該init程序將會負責檢測全部其餘的硬件設備,掛載必要的文件系統,啓動必要的服務等等
關機時,init程序將會中止全部服務,卸載全部的問價系統,返回initrd環境,卸載根文件系統,關閉電源

注意:

有了systemd,基於shell的服務腳本僅用於幾個傳統服務,所以,帶有shell變量的配置文件將被取代,如/etc/sysconfig中能夠找到配置文件,仍在使用中的配置文件做爲systemd環境文件被導入,並做爲NAME=VALUE對進行讀取他們再也不以shell腳本的形式提供
systemctl和systemd unit
systectl命令用於管理各類類型的systemd對象,他們成爲單元,能夠經過systemctl -t help命令顯示可用unit類型的類表。

如下是一些經常使用的unit類型

.service unit擴展名爲.service,表示系統服務。這總unit用於啓動常常訪問的守護進程,如Web服務器
.socket unit 擴展名爲.socket ,表示IPC(進程間通訊)socket。
.path unit擴展名爲.path, 用於將服務器的激活推遲到特定文件發生更改以後

服務狀態

能夠經過systemctl status name.type查看服務的狀態,若是爲提供unit類型,則systemctl將顯示服務unit的狀態(若是存在)

[root@localhost ~]# systemctl status sshd.service 
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2018-08-29 11:19:31 CST; 22h ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 1054 (sshd)
   CGroup: /system.slice/sshd.service
           └─1054 /usr/sbin/sshd -D

8月 29 11:19:31 localhost.localdomain systemd[1]: Starting OpenSSH server daemon...
8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on 0.0.0.0 port 22.
8月 29 11:19:31 localhost.localdomain sshd[1054]: Server listening on :: port 22.
8月 29 11:19:31 localhost.localdomain systemd[1]: Started OpenSSH server daemon.
8月 29 11:21:11 localhost.localdomain sshd[3054]: Accepted password for root from 10....2
8月 30 08:49:36 localhost.localdomain sshd[8762]: Accepted password for root from 10....2
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# 
關鍵字:描述
loaded unit配置文件已處理
active(running) 一個或者多個進程正在持續運行
active(exited)一成功完成一次配置
active(waiting)運行中,可是正在等待event
inactive 沒有運行
enabled 將在系統啓動時啓動
disabled 不會在系統啓動時啓動
static 沒法啓動,但能夠由某一啓動的unit自啓啓動

更多詳情請百度。。概念性的東西不想寫。。

相關文章
相關標籤/搜索