Linux運維一定要知道的服務管理!
簡介
在Linux中,無論何時當你安裝任何帶有服務和守護進程的包,系統(tǒng)默認會把這些服務的初始化及systemd腳本添加進去,不過此時它們并沒有被啟用。
我們需要手動的開啟或者關(guān)閉那些服務。Linux中有三個著名的且一直在被使用的初始化系統(tǒng)。
在以Linux/Unix為基礎(chǔ)的操作系統(tǒng)上,init(初始化的簡稱) 是內(nèi)核引導系統(tǒng)啟動過程中第一個啟動的進程。
init的進程id (pid)是1,除非系統(tǒng)關(guān)機否則它將會一直在后臺運行。
init首先根據(jù)/etc/inittab文件決定Linux運行的級別,然后根據(jù)運行級別在后臺啟動所有其他進程和應用程序。
BIOS、MBR、GRUB和內(nèi)核程序在啟動init之前就作為Linux的引導程序的一部分開始工作了。
下面是Linux中可以使用的運行級別(從0~6總共七個運行級別):
? 0:關(guān)機
? 1:單用戶模式
? 2:多用戶模式(沒有NFS)
? 3:完全的多用戶模式
? 4:系統(tǒng)未使用
? 5:圖形界面模式
? 6:重啟
初始化系統(tǒng)
下面是 Linux 系統(tǒng)中最常用的三個初始化系統(tǒng):
?System V(Sys V)
?Upstart
?systemd
System V(Sys V)
System V(Sys V)是類Unix系統(tǒng)第一個也是傳統(tǒng)的初始化系統(tǒng)。init是內(nèi)核引導系統(tǒng)啟動過程中第一支啟動的程序,它是所有程序的父進程。
大部分Linux發(fā)行版最開始使用的是叫作System V(Sys V)的傳統(tǒng)的初始化系統(tǒng)。在過去的幾年中,已經(jīng)發(fā)布了好幾個初始化系統(tǒng)以解決標準版本中的設(shè)計限制,例如:launchd、Service Management Facility、systemd和Upstart。
但是systemd已經(jīng)被幾個主要的Linux發(fā)行版所采用,以取代傳統(tǒng)的SysV初始化系統(tǒng)。
Upstart
Upstart是一個基于事件的/sbin/init守護進程的替代品,它在系統(tǒng)啟動過程中處理任務和服務的啟動,在系統(tǒng)運行期間監(jiān)視它們,在系統(tǒng)關(guān)機的時候關(guān)閉它們。
它最初是為Ubuntu而設(shè)計,但是它也能夠完美的部署在其他所有Linux系統(tǒng)中,用來代替古老的System-V。
Upstart被用于Ubuntu 9.10到Ubuntu 14.10和基于RHEL 6的系統(tǒng),之后它被systemd取代。
systemd
systemd是一個新的初始化系統(tǒng)和系統(tǒng)管理器,它被用于所有主要的Linux發(fā)行版,以取代傳統(tǒng)的SysV初始化系統(tǒng)。
systemd兼容SysV和LSB初始化腳本。它可以直接替代SysV初始化系統(tǒng)。systemd是被內(nèi)核啟動的第一個程序,它的PID是1。
systemd是所有程序的父進程,F(xiàn)edora 15是第一個用systemd取代upstart的發(fā)行版。systemctl用于命令行,它是管理systemd的守護進程/服務的主要工具,例如:(開啟、重啟、關(guān)閉、啟用、禁用、重載和狀態(tài))
systemd使用.service文件而不是bash腳本(SysVinit 使用的)。systemd將所有守護進程添加到cgroups中排序,你可以通過瀏覽/cgroup/systemd文件查看系統(tǒng)等級。
service
service命令,顧名思義,就是用于管理Linux操作系統(tǒng)中服務的命令。
這個命令不是在所有的linux發(fā)行版本中都有。主要是在redhat、fedora、mandriva和centos中。
查看所有服務當前的運行狀態(tài) service --status-all 查看指定服務(vsftpd)的運行狀態(tài) service vsftpd status 停止指定服務(vsftpd) service vsftpd stop 重啟網(wǎng)絡(luò)服務 service network restart
chkconfig
chkconfig實用程序是一個命令行工具,允許你在指定運行級別下啟動所選服務,以及列出所有可用服務及其當前設(shè)置。
此外,它還允許我們從啟動中啟用或禁用服務。前提是你有超級管理員權(quán)限(root或者sudo)運行這個命令。
所有的服務腳本位于/etc/init.d文件中
image-20210803160510022
image-20210803153702926
設(shè)定mysqld在等級3和5為開機運行服務,--level 35表示操作只在等級3和5執(zhí)行,on表示啟動,off表示關(guān)閉 chkconfig --level 35 mysqld on 設(shè)定mysqld在各等級為on,“各等級”包括2、3、4、5等級 chkconfig mysqld on 修改服務的默認啟動等級 chkconfig --level 35 mysqld on
systemctl
概念
systemd核心概念unit(單元)類型:unit表示不同類型的systemd對象,通過配置文件進行標識和配置;
文件中主要包含了系統(tǒng)服務、監(jiān)聽socket、保存的系統(tǒng)快照以及其它與init相關(guān)的信息
下面為unit類型 :
?service:文件擴展名為.service, 用于定義系統(tǒng)服務
?target:文件擴展名為.target,用于模擬實現(xiàn)運行級別
?device:用于定義內(nèi)核識別的設(shè)備
?mount:定義文件系統(tǒng)掛載點
?socket:用于標識進程間通信用的socket文件,也可在系統(tǒng)啟動時,延遲啟動服務,實現(xiàn)按需啟動
?snapshot:管理系統(tǒng)快照
?swap:用于標識swap設(shè)備
?automount:文件系統(tǒng)的自動掛載點
?path:用于定義文件系統(tǒng)中的一個文件或目錄使用,常用于當文件系統(tǒng)變化時,延遲激活服務
么如何查看這些類型呢?
可以使用-t加上類型去查看,以service為例
ststemctl -t service

systemd的配置文件目錄
?/usr/lib/systemd/system/:每個服務最主要的啟動腳本的配置放在這,有點類似以前的/etc/init.d;
image-20210803213413975
?/run/systemd/system/:系統(tǒng)執(zhí)行過程中所產(chǎn)生的服務腳本所在目錄,這些腳本的優(yōu)先級要比/usr/lib/systemd/system/高;
image-20210803213505374
?/etc/systemd/system/:管理員根據(jù)主機系統(tǒng)的需求所創(chuàng)建的執(zhí)行腳本所在目錄,執(zhí)行優(yōu)先級比/run/systemd/system/高;
image-20210803213309938
從上面的功能及優(yōu)先級次序,我們可以知道,/etc/systemd/system/目錄下的相關(guān)配置,決定系統(tǒng)了會不會執(zhí)行某些服務,所以該目錄下面一般放著一大堆鏈接文件。而/usr/lib/systemd/system/下,則放著實際執(zhí)行的systemd啟動腳本配置文件。因此如果你想要修改某個服務啟動的設(shè)置,應該去/usr/lib/systemd/system/下面修改。/etc/systemd/system/僅是鏈接到正確的執(zhí)行腳本配置文件而已。所以想要看執(zhí)行腳本設(shè)置,應該就得要到/usr/lib/systemd/system/去查閱。
常用命令
任務 | 舊指令 | 新指令 |
使某服務自動啟動 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服務不自動啟動 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
檢查服務狀態(tài) | 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 |
查看服務狀態(tài)
systemctl status httpd
運行狀態(tài):
?active(running):正有一只或多只程序正在系統(tǒng)中執(zhí)行的意思;
?active(exited):僅執(zhí)行一次就正常結(jié)束的服務,目前并沒有任何程序在系統(tǒng)中執(zhí)行;
?active(waiting):正在執(zhí)行當中,不過還需要等待其他的事件才能繼續(xù)處理;
?inactive:這個服務目前沒有運行;
?dead:程序已經(jīng)清除;
啟動狀態(tài):
?enabled:這個daemon將在開機時被執(zhí)行;
?disabled:這個daemon在開機時不會被執(zhí)行;
?static:這個daemon不可以自己啟動(enable不可),不過可能會被其他的enabled的服務來喚醒(關(guān)聯(lián)屬性的服務);
?mask:這個daemon無論如何都無法被啟動,因為已經(jīng)被強制注銷(非刪除),可通過systemctlunmask方式改回原本狀態(tài);
image-20210803213938487
檢查服務的所有配置詳細信息
systemctl show httpd

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

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

按層次列出控制組
systemd-cgls

根據(jù)CPU,內(nèi)存,輸入和輸出列出控制組
systemd-cgtop

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

列出所有可用的系統(tǒng)套接字
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 #查看套接字狀態(tài) systemctl is-active cups.socket systemctl enable cups.socket systemctl disable cups.socket
其他命令
systemctl mask httpd.service #禁用某個服務 systemctl unmask httpd.service #解除禁用某個服務 systemctl isolate multi-user.target #將目前的操作環(huán)境改為純文本模式,關(guān)掉圖形界面 systemctl isolate graphical.target #將目前的操作環(huán)境改為圖形界面 systemctl poweroff # 系統(tǒng)關(guān)機 systemctl reboot # 重新開機 systemctl suspend # 進入暫停模式 systemctl hibernate # 進入休眠模式 systemctl rescue # 強制進入救援模式 systemctl emergency # 強制進入緊急救援模式
鏈接:https://blog.csdn.net/weixin_46622350/article/details/119360481?spm=1001.2014.3001.5502
-
Linux
+關(guān)注
關(guān)注
87文章
11446瀏覽量
212645 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7059瀏覽量
124880 -
腳本
+關(guān)注
關(guān)注
1文章
396瀏覽量
28327
原文標題:Linux運維一定要知道的服務管理!
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Linux的內(nèi)存管理是什么,Linux的內(nèi)存管理詳解

ARM嵌入式Linux系統(tǒng)開發(fā)詳解
Linux基礎(chǔ)命令之Linux系統(tǒng)服務解析
《Linux設(shè)備驅(qū)動開發(fā)詳解》第9章、Linux設(shè)備驅(qū)動中的異步通知與異步IO

《Linux設(shè)備驅(qū)動開發(fā)詳解》第8章、Linux設(shè)備驅(qū)動中的阻塞與非阻塞IO

《Linux設(shè)備驅(qū)動開發(fā)詳解》第7章、Linux設(shè)備驅(qū)動中的并發(fā)控制

《Linux設(shè)備驅(qū)動開發(fā)詳解》第5章、Linux文件系統(tǒng)與設(shè)備文件系統(tǒng)

評論