Linux系統啓動流程及服務控制

博文結構
啓動5個階段
Linux關機
什麼是daemon與服務(service)
通過systemctl管理服務
Systemctl針對service類型的配置文件

一.啓動5個階段:

Linux系統啓動流程及服務控制

內核的引導。
運行 init。
系統初始化。
建立終端 。
用戶登錄系統。

1.開機自檢
服務器主機開機之後,將根據主板BIOS中的設置對CPU、內存、顯卡、鍵盤等設備進行初步檢測,檢測成功後根據預設的啓動順序移交系統控制權,大多時候會移交本機硬盤;

2.MBR引導
當從本機硬盤中啓動系統時,首先根據硬盤第一個扇區中MBR(主引導記錄)的設置,將系統控制權傳遞給包含操作系統引導文件的分區;或者直接根據MBR記錄中的引導信息調用啓動菜單(如GRUB);

3.GRUB菜單
對於Linux操作系統來說,GRUB(統一啓動加載器)是使用最爲廣泛的多系統引導器程序。系統控制權傳遞給GRUB後,將會顯示啓動菜單給用戶選擇,並根據所選項(或採用默認值)加載Linux內核文件,然後將系統控制權轉交給內核。需要注意的是,Centos 7 採用的是GRUB2啓動引導器。

4.加載Linux內核
Linux內個是一個預先編譯好的特殊二進制文件,介於各種硬件資源與系統程序之間,負責資源分配與調度。內核接過系統控制權以後,將會完全掌握整個Linux操作系統的運行過程。在Centos 系統中,默認的內核文件是“/boot/vmlinuz-3.10.0-514.el7.x86_64”。

5.init進程初始化
爲了進一步的系統引導過程,Linux內核首先將系統中的“/sbin/init”程序加載到內存中運行,init進程負責完成一系列的系統初始化過程,最後等待用戶進行登錄。

二.init程序的類型:

SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

三.運行級別

Linux系統有7個運行級別(runlevel):

運行級別0:系統停機狀態,系統默認運行級別不能設爲0,否則不能正常啓動
運行級別1:單用戶工作狀態,root權限,用於系統維護,禁止遠程登陸
運行級別2:多用戶狀態(沒有NFS)
運行級別3:完全的多用戶狀態(有NFS),登陸後進入控制檯命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制檯,登陸後進入圖形GUI模式
運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,否則不能正常啓動
在inittab中的以下6行就是定義了6個終端:
1:2345:respawn:/sbin/mingetty tty1 
2:2345:respawn:/sbin/mingetty tty2 
3:2345:respawn:/sbin/mingetty tty3 
4:2345:respawn:/sbin/mingetty tty4 
5:2345:respawn:/sbin/mingetty tty5 
6:2345:respawn:/sbin/mingetty tty6

用戶登錄系統

一般來說,用戶的登錄方式有三種:

(1)命令行登錄
(2)ssh登錄
(3)圖形界面登錄

四.圖形模式與文字模式的切換方式

Linux預設提供了六個命令窗口終端機讓我們來登錄。
默認我們登錄的就是第一個窗口,也就是tty1,這個六個窗口分別爲tty1,tty2 … tty6,你可以按下Ctrl + Alt + F1 ~ F6 來切換它們。

Linux系統啓動流程及服務控制

sync                          將數據由內存同步到硬盤中
shutdown                 關機指令
shutdown –h now   立馬關機
shutdown –h 20:25 系統會在今天20:25關機
shutdown –h +10    是分鐘後關機
shutdown –r now    系統立馬重啓
shutdown –r +10     系統十分鐘後重啓
reboot                      重啓 == shutdown –r now
halt                關閉系統
正確的關機流程爲:sync > shutdown > reboot > halt
不管是重啓系統還是關閉系統,首先要運行 sync 命令,把內存中的數據寫到磁盤中。
關機的命令有 shutdown –h now poweroff 和 init 0 
重啓系統的命令有 shutdown –r now reboot init 6
服務的啓動、關閉與觀察等方式:
啓動:/etc/init.d/daemon start 
關閉:/etc/init.d/daemon stop 
重新啓動:/etc/init.d/daemon restart 
狀態觀察:/etc/init.d/daemon status
服務啓動的分類: 
服務的相依性問題: 
執行等級的分類: 
制定執行等級默認要啓動的服務:
默認要啓動: chkconfig daemon on 
默認不啓動: chkconfig daemon off 
觀察默認爲啓動否: chkconfig --list daemon 
執行等級的切換行爲: init3  init 5(純切換到圖形界面)

五.什麼是daemon與服務(service)

(1)systemd好處如下:

平行處理所有服務,加速開機流程: 
一經要求就回應的 on-demand 啓動方式(systemctl) 
服務相依性的自我檢查: 
依 daemon 功能分類:unit(服務單位)
將多個 daemons 集合成爲一個羣組:
向下相容舊有的 init 服務腳本: 

(2)systemd 的配置文件放置目錄

/usr/lib/systemd/system/:每個服務最主要的啓動腳本設置,有點類似以前的 /etc/init.d 下面的文件;

/run/systemd/system/:系統執行過程中所產生的服務腳本,這些腳本的優先序要比 /usr/lib/systemd/system/ 高! 

/etc/systemd/system/:管理員依據主機系統的需求所創建的執行腳本,其實這個目錄有點像以前 /etc/rc.d/rc5.d/Sxx 之類的功 能!執行優先序又比 /run/systemd/system/ 高 

(3)daemon與服務(service)

Linux系統啓動流程及服務控制

(4)通過systemctl管理服務

1、active (running):正有一隻或多隻程序正在系統中執行的意思,舉例來說,正在執行中的 vsftpd 就是這種模式。 
2、active (exited):僅執行一次就正常結束的服務,目前並沒有任何程序在系統中執行。 舉例來說,開機或者是掛載時纔會進 行一次的 quotaon 功能,就是這種模式! quotaon 不須一直執行~只須執行一次之後,就交給文件系統去自行處理囉!通常用 bash shell 寫的小型服務,大多是屬於這種類型 (無須常駐內存)。 
3、active (waiting):正在執行當中,不過還再等待其他的事件才能繼續處理。
4、inactive:這個服務目前沒有運行的意思。 既然 daemon 目前的狀態就有這麼多種了,那麼 daemon 的默認狀態有沒有可能除了 
5、enabled:這個 daemon 將在開機時被執行 
6、disabled:這個 daemon 在開機時不會被執行 
7、static:這個 daemon 不可以自己啓動 (enable 不可),不過可能會被其他的 enabled 的服務來喚醒 (相依屬性的服務) 
8、mask:這個 daemon 無論如何都無法被啓動!因爲已經被強制註銷 (非刪除)。可通過 systemctl unmask 方式改回原本狀態

舉例說明

強迫服務註銷 (mask)

root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl mask firewalld  \\就是把啓動的腳本清除
[root@localhost ~]# systemctl status firewalld
● firewalld.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead) since 六 2019-11-23 23:05:22 CST; 17s ago
 Main PID: 752 (code=exited, status=0/SUCCESS)

11月 23 23:03:40 localhost.localdomain systemd[1]: Starting firewalld - dynamic fi....
11月 23 23:03:43 localhost.localdomain systemd[1]: Started firewalld - dynamic fir....
11月 23 23:05:22 localhost.localdomain systemd[1]: Stopping firewalld.service...
11月 23 23:05:22 localhost.localdomain systemd[1]: Stopped firewalld.service.
Hint: Some lines were ellipsized, use -l to show in full.
[root@localhost ~]# 

[root@localhost ~]# systemctl unmask firewalld  \\解除mask
[root@localhost ~]# systemctl status firewalld

六.CentOS 7.1 的默認情況下,就有 26 個 target unit

主要有下面幾個

graphical.target:就是文字加上圖形界面,這個項目已經包含了下面的 multi-user.target 項目! 
multi-user.target:純文本模式! 
rescue.target:在無法使用 root 登陸的情況下,systemd 在開機時會多加一個額外的暫時系統,與你原本的系統無關。這時你可以取得 root 的權限來維護你的系統。 但是這是額外系統,因此可能需要動到 chroot 的方式來取得你原有的系統
emergency.target:緊急處理系統的錯誤,還是需要使用 root 登陸的情況,在無法使用 rescue.target 時,可以嘗試使用這種模 式! 
5.shutdown.target:就是關機的流程。 
6.getty.target:可以設置你需要幾個 tty 之類的,如果想要降低 tty 的項目,可以修改這個東西的配置文件!

正常的模式是 multi-user.target 以及 graphical.target 兩個,救援方面的模式主要是 rescue.target 以及更嚴重的 emergency.target。 如果要修改可提供登陸的 tty 數量,則修改 getty.target 項目。基本上,我們最常使用的當然就是 multi-user 以及 graphical

[root@localhost ~]# systemctl poweroff  \\系統關機
[root@localhost ~]# systemctl reboot    \\重新開機
[root@localhost ~]# systemctl suspend   \\進入暫停模式
[root@localhost ~]# systemctl hibernate  \\進入休眠模式
[root@localhost ~]# systemctl rescue   \\強制進入救援模式
[root@localhost ~]# systemctl emergency   \\強制進入緊急救援模式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章