Linux運維一定要知道的服務管理!
簡介
在
Linux
中,無論何時當你安裝任何帶有服務和守護程序的包,系統預設會把這些服務的初始化及 systemd
指令碼新增進去,不過此時它們並沒有被啟用。我們需要手動的開啟或者關閉那些服務。
Linux
中有三個著名的且一直在被使用的初始化系統。在以
Linux/Unix
為基礎的作業系統上,init
(初始化的簡稱) 是核心引導系統啟動過程中第一個啟動的程序。init
的程序id (pid)
是1
,除非系統關機否則它將會一直在後臺執行。init
首先根據 /etc/inittab
檔案決定Linux
執行的級別,然後根據執行級別在後臺啟動所有其他程序和應用程式。BIOS
、MBR
、GRUB
和核心程式在啟動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)
的傳統的初始化系統。在過去的幾年中,已經發布了好幾個初始化系統以解決標準版本中的設計限制,例如:launchd
、Service Management Facility
、systemd
和 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
相容SysV
和LSB
初始化指令碼。它可以直接替代SysV
初始化系統。systemd
是被核心啟動的第一個程式,它的PID
是1
。systemd
是所有程式的父程序,Fedora 15
是第一個用systemd
取代upstart
的發行版。systemctl
用於命令列,它是管理 systemd
的守護程序/服務的主要工具,例如:(開啟、重啟、關閉、啟用、停用、過載和狀態)systemd
使用 .service
檔案而不是bash
指令碼(SysVinit 使用的)。systemd
將所有守護程序新增到 cgroups
中排序,你可以透過瀏覽/cgroup/systemd
檔案檢視系統等級。service
service
命令,顧名思義,就是用於管理Linux
作業系統中服務的命令。這個命令不是在所有的
linux
發行版本中都有。主要是在redhat
、fedora
、mandriva
和centos
中。檢視所有服務當前的執行狀態service --status-all檢視指定服務(vsftpd)的執行狀態service vsftpd status停止指定服務(vsftpd)service vsftpd stop重啟網路服務service network restart
chkconfig
chkconfig
實用程式是一個命令列工具,允許你在指定執行級別下啟動所選服務,以及列出所有可用服務及其當前設定。此外,它還允許我們從啟動中啟用或停用服務。前提是你有超級管理員許可權(
root
或者sudo
)執行這個命令。所有的服務指令碼位於
/etc/init.d
檔案中

設定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

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

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

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

從上面的功能及優先順序次序,我們可以知道,
/etc/systemd/system/
目錄下的相關配置,決定系統了會不會執行某些服務,所以該目錄下面一般放著一大堆連結檔案。而/usr/lib/systemd/system
/下,則放著實際執行的systemd
啟動指令碼配置檔案。因此如果你想要修改某個服務啟動的設定,應該去/usr/lib/systemd/system/
下面修改。/etc/systemd/system/
僅是連結到正確的執行指令碼配置檔案而已。所以想要看執行指令碼設定,應該就得要到/usr/lib/systemd/system/
去查閱。常用命令
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
檢視服務狀態
systemctl status httpd
執行狀態:
-
• active(running)
:正有一隻或多隻程式正在系統中執行的意思; -
• active(exited)
:僅執行一次就正常結束的服務,目前並沒有任何程式在系統中執行; -
• active(waiting)
:正在執行當中,不過還需要等待其他的事件才能繼續處理; -
• inactive
:這個服務目前沒有執行; -
• dead
:程式已經清除;
啟動狀態:
-
• enabled
:這個daemon
將在開機時被執行; -
• disabled
:這個daemon
在開機時不會被執行; -
• static
:這個daemon
不可以自己啟動(enable
不可),不過可能會被其他的enabled
的服務來喚醒(關聯屬性的服務); -
• mask
:這個daemon
無論如何都無法被啟動,因為已經被強制登出(非刪除),可透過systemctlunmask
方式改回原本狀態;

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

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

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

按層次列出控制組
systemd-cgls

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

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

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

套接字的操作
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
(版權歸原作者所有,侵刪)
文末福利





······



以上所有資料獲取請掃碼

100%免費領取
(後臺不再回復,掃碼一鍵領取