Linux運維一定要知道的服務管理!

Linux運維一定要知道的服務管理!

簡介

在 Linux中,無論何時當你安裝任何帶有服務和守護程序的包,系統預設會把這些服務的初始化及 systemd指令碼新增進去,不過此時它們並沒有被啟用。
我們需要手動的開啟或者關閉那些服務。Linux中有三個著名的且一直在被使用的初始化系統。
在以Linux/Unix為基礎的作業系統上,init(初始化的簡稱) 是核心引導系統啟動過程中第一個啟動的程序。
init 的程序id (pid)1,除非系統關機否則它將會一直在後臺執行。
init 首先根據 /etc/inittab 檔案決定Linux執行的級別,然後根據執行級別在後臺啟動所有其他程序和應用程式。
BIOSMBRGRUB 和核心程式在啟動init之前就作為 Linux的載入程式的一部分開始工作了。
下面是 Linux 中可以使用的執行級別(從0~6總共七個執行級別):
  • • 0:關機
  • • 1:單使用者模式
  • • 2:多使用者模式(沒有NFS)
  • • 3:完全的多使用者模式
  • • 4:系統未使用
  • • 5:圖形介面模式
  • • 6:重啟

初始化系統

下面是 Linux 系統中最常用的三個初始化系統:
  • • System V(Sys V)
  • • Upstart
  • • systemd

System V(Sys V)

System V(Sys V)是類Unix系統第一個也是傳統的初始化系統。init是核心引導系統啟動過程中第一支啟動的程式,它是所有程式的父程序。
大部分Linux 發行版最開始使用的是叫作 System V(Sys V)的傳統的初始化系統。在過去的幾年中,已經發布了好幾個初始化系統以解決標準版本中的設計限制,例如:launchdService Management Facilitysystemd和 Upstart
但是systemd 已經被幾個主要的 Linux發行版所採用,以取代傳統的 SysV初始化系統。

Upstart

Upstart 是一個基於事件的/sbin/init守護程序的替代品,它在系統啟動過程中處理任務和服務的啟動,在系統執行期間監視它們,在系統關機的時候關閉它們。
它最初是為 Ubuntu而設計,但是它也能夠完美的部署在其他所有Linux系統中,用來代替古老的 System-V
Upstart被用於 Ubuntu 9.10 到 Ubuntu 14.10 和基於 RHEL 6的系統,之後它被systemd取代。

systemd

systemd是一個新的初始化系統和系統管理器,它被用於所有主要的 Linux發行版,以取代傳統的SysV初始化系統。
systemd相容SysVLSB初始化指令碼。它可以直接替代SysV 初始化系統。systemd 是被核心啟動的第一個程式,它的PID 是1
systemd是所有程式的父程序,Fedora 15 是第一個用systemd 取代upstart的發行版。systemctl 用於命令列,它是管理 systemd的守護程序/服務的主要工具,例如:(開啟、重啟、關閉、啟用、停用、過載和狀態)
systemd使用 .service 檔案而不是bash 指令碼(SysVinit 使用的)。systemd 將所有守護程序新增到 cgroups中排序,你可以透過瀏覽/cgroup/systemd檔案檢視系統等級。

service

service命令,顧名思義,就是用於管理Linux作業系統中服務的命令。
這個命令不是在所有的linux發行版本中都有。主要是在redhatfedoramandrivacentos中。
檢視所有服務當前的執行狀態service --status-all檢視指定服務(vsftpd)的執行狀態service vsftpd status停止指定服務(vsftpd)service vsftpd stop重啟網路服務service network restart

chkconfig

chkconfig實用程式是一個命令列工具,允許你在指定執行級別下啟動所選服務,以及列出所有可用服務及其當前設定。
此外,它還允許我們從啟動中啟用或停用服務。前提是你有超級管理員許可權(root 或者sudo)執行這個命令。
所有的服務指令碼位於/etc/init.d檔案中

image-20210803160510022

image-20210803153702926
設定mysqld在等級3和5為開機執行服務,--level 35表示操作只在等級3和5執行,on表示啟動,off表示關閉chkconfig --level 35 mysqld on 設定mysqld在各等級為on,“各等級”包括2、3、4、5等級chkconfig mysqld on        修改服務的預設啟動等級chkconfig --level 35 mysqld on

systemctl

概念

systemd核心概念unit(單元)型別:unit表示不同型別的systemd物件,透過配置檔案進行標識和配置;檔案中主要包含了系統服務監聽socket儲存的系統快照以及其它與init相關的資訊
下面為unit型別 :
  • • service:副檔名為.service, 用於定義系統服務
  • • target:副檔名為.target,用於模擬實現執行級別
  • • device :用於定義核心識別的裝置
  • • mount:定義檔案系統掛載點
  • • socket:用於標識程序間通訊用的socket檔案,也可在系統啟動時,延遲啟動服務,實現按需啟動
  • • snapshot :管理系統快照
  • • swap:用於標識swap裝置
  • • automount :檔案系統的自動掛載點
  • • path:用於定義檔案系統中的一個檔案或目錄使用,常用於當檔案系統變化時,延遲啟用服務
麼如何檢視這些型別呢?
可以使用-t加上型別去檢視,以service為例
ststemctl -t service

image-20210803212557113

systemd的配置檔案目錄

  • • /usr/lib/systemd/system/:每個服務最主要的啟動指令碼的配置放在這,有點類似以前的/etc/init.d

image-20210803213413975
  • • /run/systemd/system/:系統執行過程中所產生的服務指令碼所在目錄,這些指令碼的優先順序要比/usr/lib/systemd/system/高;

image-20210803213505374
  • • /etc/systemd/system/:管理員根據主機系統的需求所建立的執行指令碼所在目錄,執行優先順序比/run/systemd/system/高;

image-20210803213309938
從上面的功能及優先順序次序,我們可以知道,/etc/systemd/system/目錄下的相關配置,決定系統了會不會執行某些服務,所以該目錄下面一般放著一大堆連結檔案。而/usr/lib/systemd/system/下,則放著實際執行的systemd啟動指令碼配置檔案。因此如果你想要修改某個服務啟動的設定,應該去/usr/lib/systemd/system/下面修改。/etc/systemd/system/僅是連結到正確的執行指令碼配置檔案而已。所以想要看執行指令碼設定,應該就得要到/usr/lib/systemd/system/去查閱。

常用命令

任務
舊指令
新指令
使某服務自動啟動
chkconfig –level 3 httpd on
systemctl enable httpd.service
使某服務不自動啟動
chkconfig –level 3 httpd off
systemctl disable httpd.service
檢查服務狀態
service httpd status
systemctl status httpd.service (服務詳細資訊) systemctl is-active httpd.service (僅顯示是否 Active)
顯示所有已啟動的服務
chkconfig –list
systemctl list-units –type=service
啟動某服務
service httpd start
systemctl start httpd.service
停止某服務
service httpd stop
systemctl stop httpd.service
重啟某服務
service httpd restart
systemctl restart httpd.service
檢視服務狀態
systemctl status httpd
執行狀態:
  • • active(running):正有一隻或多隻程式正在系統中執行的意思;
  • • active(exited):僅執行一次就正常結束的服務,目前並沒有任何程式在系統中執行;
  • • active(waiting):正在執行當中,不過還需要等待其他的事件才能繼續處理;
  • • inactive:這個服務目前沒有執行;
  • • dead:程式已經清除;
啟動狀態:
  • • enabled:這個daemon將在開機時被執行;
  • • disabled:這個daemon在開機時不會被執行;
  • • static:這個daemon不可以自己啟動(enable不可),不過可能會被其他的enabled 的服務來喚醒(關聯屬性的服務);
  • • mask:這個daemon無論如何都無法被啟動,因為已經被強制登出(非刪除),可透過systemctlunmask方式改回原本狀態;

image-20210803213938487
檢查服務的所有配置詳細資訊
systemctl show httpd

image-20210803210056119
檢視各服務開機自啟情況
systemctl list-unit-files --type=service

image-20210803212005893
獲取服務的依賴項列表
systemctl list-dependencies httpd.service

image-20210803210246562
按層次列出控制組
systemd-cgls

image-20210803210737214
根據CPU,記憶體,輸入和輸出列出控制組
systemd-cgtop

image-20210803210940418
分析每個程序在引導時花費的時間
systemd-analyze blame

image-20210803204820452
列出所有可用的系統套接字
systemctl list-unit-files --type=socket

image-20210803205639124
套接字的操作
systemctl start cups.socket #啟動套接字systemctl restart cups.socket #重啟套接字systemctl stop cups.socket #停止套接字systemctl reload cups.socket #重新載入套接字systemctl status cups.socket #檢視套接字狀態systemctl is-active cups.socketsystemctl enable cups.socketsystemctl disable cups.socket
其他命令
systemctl mask httpd.service   #停用某個服務systemctl unmask httpd.service   #解除停用某個服務systemctl isolate multi-user.target  #將目前的操作環境改為純文字模式,關掉圖形介面systemctl isolate graphical.target  #將目前的操作環境改為圖形介面systemctl poweroff # 系統關機systemctl reboot  # 重新開機systemctl suspend  # 進入暫停模式systemctl hibernate # 進入休眠模式systemctl rescue  # 強制進入救援模式systemctl emergency # 強制進入緊急救援模式
連結:https://blog.csdn.net/weixin_46622350/article/details/119360481?spm=1001.2014.3001.5502
(版權歸原作者所有,侵刪)
文末福利
就目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。
為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套高階運維工程師必備技能資料包,內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
備註:最新運維資料
100%免費領取
(後臺不再回復,掃碼一鍵領取

相關文章