Linux系統啟動與服務管理的方法是什么

蝸牛 互聯網技術資訊 2022-01-28 28 0

今天小編給大家分享一下Linux系統啟動與服務管理的方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

Linux系統啟動與服務管理的方法是什么  linux 第1張

1. 前言

??服務器在正常的運行過程中,一般很少重啟,但是如果發生了未知故障或者遇到了人為誤操作的情況,可能就會出現啟動異常的狀況。雖然 Linux 系統啟動流程是比較底層的知識了,但是為了加深對 Linux 系統的理解,總結了這篇文章。

2. Linux 系統啟動過程

Linux系統啟動與服務管理的方法是什么  linux 第2張

2.1 開機自檢

??服務器主機開機以后,將根據主板 BIOS 中的設置對 CPU、內存、顯卡、硬盤等設備進行初步檢測,檢測成功后根據預設的啟動順序移交系統控制權,大多時候會移交給本機硬盤。

2.2 MBR 引導

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

2.3 GRUB 菜單

??對于Linux操作系統來說,GRUB (統一啟動加載器)是使用最為廣泛的多系統引導器程序。系統控制權傳遞給 GRUB 以后,將會顯示啟動菜單給用戶選擇,并根據所選項(或采用默認值)加載 Linux 內核文件,然后將系統控制權轉交給內核。需要注意的是,Centos7 采用的是 GRUB2 啟動引導器。

2.4 加載 Linux 內核

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

2.5 init 進程初始化

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

2.6 系統啟動過程總結

  • 檢測出第一個能夠引導系統的設備比如硬盤或光驅

  • 運行放在 MBR 扇區里的啟動 GRUB 引導程序

  • GRUB 引導程序通過讀取 GRUB 配置文件 /boot/grub2/grub.cfg 來獲取內核和鏡像文件系統的設置以及路徑位置

  • 把內核和鏡像文件系統加載到內存中

  • 加載硬件驅動程序,內核把 init 進程加載到內存中運行

3. init 進程與 systemd

3.1 init 進程

  • 由 Linux 內核加載運行 /sbin/init 程序

  • init 進程是系統中第一個進程

  • init 進程的 PID 號永遠為 1

[root@c7-1?~]#ll?/sbin/initlrwxrwxrwx.?1?root?root?22?8月??13?21:44?/sbin/init?->?../lib/systemd/systemd

3.2 Centos5/6/7 init 進程對比

Linux系統啟動與服務管理的方法是什么  linux 第3張

3.3 systemd

  • systemd 是 Linux 操作系統的一種 init 軟件

  • CentOS7 中采用全新的 systemd 啟動方式,取代傳統的 SysVinit

  • CentOS7 中運行的第一個 init 進程是 /lib/systemd/systemd

[root@c7-1?~]#ps?-ef
UID?????????PID???PPID??C?STIME?TTY??????????TIME?CMD
root??????????1??????0??0?8月15?????????00:00:31?/usr/lib/systemd/systemd?--switched-root?--system?--deserialize?22
root??????????2??????0??0?8月15?????????00:00:00?[kthreadd]
root??????????4??????2??0?8月15?????????00:00:00?[kworker/0:0H]
root??????????6??????2??0?8月15?????????00:00:00?[ksoftirqd/0]
root??????????7??????2??0?8月15?????????00:00:00?[migration/0]
......

3.4 systemd 單元類型

單元類型 擴展名 說明
Service .service 描述一個系統服務
Socket .socket 描述一個進程間通信的套接字
Device .device 描述一個內核識別的設備文件
Mount .mount 描述一個文件系統的掛載點
Automount .automount 描述一個文件系統的自動掛載點
Swap .swap 描述一個內存交換設備或交換文件
Path .path 描述一個文件系統中文件或目錄
Timer .timer 描述一個定時器(用于實現類似 cron 的調度任務)
Snapshot .snapshot 用于保存一個 systemd 的狀態
Scope .scope 使用 systemd 的總線接口以編程的方式創建外部進程
Slice .slice 描述居于 Cgroup 的一組通過層次組織的管理系統進程
Target .target 描述一組 systemd 的單元

3.5 運行級別對應的 systemd 目標

運行級別 systemd 的 target 說明
0 target 關機狀態,使用該級別時將會關閉主機
1 rescue.target 單用戶模式,不需要密碼驗證即可登錄系統,多用于系統維護
2 multi-user.target 用戶定義/域特定運行級別。默認等同于3
3 multi-user.target 字符界面的完整多用戶模式,大多數服務器主機運行在此級別
4 multi-user.target 用戶定義/域特定運行級別。默認等同于3
5 graphical.target 圖形界面的多用戶模式,提供了圖形桌面操作環境
6 reboot.target 重新啟動,使用該級別時將會重啟主機

3.6 systemd 管理命令 systemctl

格式:

systemctl?COMMAND?name.service		#.service?也可以省略

Sysvinit 和 Systemd 命令對比

Sysvinit命令 Systemd命令 含義
service name start systemctl start name 啟動服務
service name stop systemctl stop name 關閉服務
service name restart systemctl restart name 重啟服務不管當前是啟動還是關閉狀態
service name reload systemctl reload name 重新載入服務配置信息而不中斷服務
service name condrestart systemctl condrestart name 運行狀態的服務可以重啟,不在運行狀態無法重啟
service name status systemctl status name 查看服務的運行狀態
chkconfig name on systemctl enable name 設置服務為開機自啟動
chkconfig name off systemctl disable name 設置服務為開機關閉
chkconfig name systemctl is-enabled name 檢查服務是否開機自啟
chkconfig name --add systemctl daemon-reload 創建一個新服務文件,或者變更配置的時候使用

示例:

#啟動?httpd?服務
systemctl?start?httpd?
#停止?httpd?服務
systemctl?stop?httpd
#重啟?httpd?服務
systemctl?restart?httpd
#查看?httpd?服務狀態
systemctl?status?httpd
#禁止自動和手動啟動服務(可以關閉運行的服務)
systemctl?mask?name.service	
#取消禁止
systemctl?unmask?name.service
#查看某服務當前是否正在運行
systemctl?is-active?name.service
#查看所有服務
systemctl?list-unit-files?--type=service
#查看所有已經激活的服務
systemctl?list-unit-files?--type=service?|?grep?enabled
#列出啟動失敗的服務
systemctl?--failed?--type=service
或
systemctl?list-units?--state?failed
或
systemctl?list-unit-files?--state=failed
#開啟?httpd?服務并設置開機自啟
systemctl?enable?--now?httpd.service
#關閉?httpd?服務并關閉開機自啟
systemctl?disable?--now?httpd.service
#查看服務的依賴關系
systemctl?list-dependencies?name.service
#殺掉進程
systemctl?kill?unitname

以上就是“Linux系統啟動與服務管理的方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注蝸牛博客行業資訊頻道。

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:niceseo99@gmail.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

評論

日本韩欧美一级A片在线观看