如何使用 chkconfig 和 systemctl 命令啟用或禁用 Linux 服務
對於 Linux 管理員來說這是一個重要(美妙)的話題,所以每個人都必須知道,並練習怎樣才能更高效的使用它們。
在 Linux 中,無論何時當你安裝任何帶有服務和守護程序的包,系統預設會把這些服務的初始化及 systemd 指令碼新增進去,不過此時它們並沒有被啟用。
我們需要手動的開啟或者關閉那些服務。Linux 中有三個著名的且一直在被使用的初始化系統。
什麼是初始化系統?
在以 Linux/Unix 為基礎的作業系統上,init
(初始化的簡稱) 是核心引導系統啟動過程中第一個啟動的程序。
init
的程序 id (pid)是 1,除非系統關機否則它將會一直在後臺執行。
init
首先根據/etc/inittab
檔案決定 Linux 執行的級別,然後根據執行級別在後臺啟動所有其他程序和應用程式。
BIOS、MBR、GRUB 和核心程式在啟動init
之前就作為 Linux 的載入程式的一部分開始工作了。
下面是 Linux 中可以使用的執行級別(從 0~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
檔案檢視系統等級。
如何使用 chkconfig 命令啟用或禁用引導服務?
chkconfig
實用程式是一個命令列工具,允許你在指定執行級別下啟動所選服務,以及列出所有可用服務及其當前設定。
此外,它還允許我們從啟動中啟用或禁用服務。前提是你有超級管理員許可權(root 或者sudo
)執行這個命令。
所有的服務指令碼位於/etc/rd.d/init.d
檔案中
如何列出執行級別中所有的服務
--list
引數會展示所有的服務及其當前狀態(啟用或禁用服務的執行級別):
# chkconfig --list NetworkManager0:off1:off2:on3:on4:on5:on6:off abrt-ccpp0:off1:off2:off3:on4:off5:on6:off abrtd0:off1:off2:off3:on4:off5:on6:off acpid0:off1:off2:on3:on4:on5:on6:off atd0:off1:off2:off3:on4:on5:on6:off auditd0:off1:off2:on3:on4:on5:on6:off . .
如何檢視指定服務的狀態
如果你想檢視執行級別下某個服務的狀態,你可以使用下面的格式匹配出需要的服務。
比如說我想檢視執行級別中auditd
服務的狀態
# chkconfig --list| grep auditd auditd0:off1:off2:on3:on4:on5:on6:off
如何在指定執行級別中啟用服務
使用--level
引數啟用指定執行級別下的某個服務,下面展示如何在執行級別 3 和執行級別 5 下啟用httpd
服務。
# chkconfig --level 35 httpd on
如何在指定執行級別下禁用服務
同樣使用--level
引數禁用指定執行級別下的服務,下面展示的是在執行級別 3 和執行級別 5 中禁用httpd
服務。
# chkconfig --level 35 httpd off
如何將一個新服務新增到啟動列表中
-–add
引數允許我們新增任何新的服務到啟動列表中,預設情況下,新新增的服務會在執行級別 2、3、4、5 下自動開啟。
# chkconfig --add nagios
如何從啟動列表中刪除服務
可以使用--del
引數從啟動列表中刪除服務,下面展示的是如何從啟動列表中刪除 Nagios 服務。
# chkconfig --del nagios
如何使用 systemctl 命令啟用或禁用開機自啟服務?
systemctl
用於命令列,它是一個用來管理 systemd 的守護程序/服務的基礎工具,例如:(開啟、重啟、關閉、啟用、禁用、過載和狀態)。
所有服務建立的 unit 檔案位與/etc/systemd/system/
。
如何列出全部的服務
使用下面的命令列出全部的服務(包括啟用的和禁用的)。
# systemctl list-unit-files --type=service UNIT FILESTATE arp-ethers.servicedisabled auditd.serviceenabled autovt@.serviceenabled blk-availability.servicedisabled brandbot.servicestatic chrony-dnssrv@.servicestatic chrony-wait.servicedisabled chronyd.serviceenabled cloud-config.serviceenabled cloud-final.serviceenabled cloud-init-local.serviceenabled cloud-init.serviceenabled console-getty.servicedisabled console-shell.servicedisabled container-getty@.servicestatic cpupower.servicedisabled crond.serviceenabled . . 150 unit files listed.
使用下面的格式通過正則表示式匹配出你想要檢視的服務的當前狀態。下面是使用systemctl
命令檢視httpd
服務的狀態。
# systemctl list-unit-files --type=service | grep httpd httpd.service disabled
如何讓指定的服務開機自啟
使用下面格式的systemctl
命令啟用一個指定的服務。啟用服務將會建立一個符號連結,如下可見:
# systemctl enable httpd Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
執行下列命令再次確認服務是否被啟用。
# systemctl is-enabled httpd enabled
如何禁用指定的服務
執行下面的命令禁用服務將會移除你啟用服務時所建立的符號連結。
# systemctl disable httpd Removed symlink /etc/systemd/system/multi-user.target.wants/httpd.service.
執行下面的命令再次確認服務是否被禁用。
# systemctl is-enabled httpd disabled
如何檢視系統當前的執行級別
使用systemctl
命令確認你係統當前的執行級別,runlevel
命令仍然可在 systemd 下工作,不過,執行級別對於 systemd 來說是一個歷史遺留的概念。所以我建議你全部使用systemctl
命令。
我們當前處於執行級別 3, 它等同於下面顯示的multi-user.target
。
# systemctl list-units --type=target UNITLOADACTIVE SUBDESCRIPTION basic.targetloaded active active Basic System cloud-config.targetloaded active active Cloud-config availability cryptsetup.targetloaded active active Local Encrypted Volumes getty.targetloaded active active Login Prompts local-fs-pre.targetloaded active active Local File Systems (Pre) local-fs.targetloaded active active Local File Systems multi-user.targetloaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.targetloaded active active Network (Pre) network.targetloaded active active Network paths.targetloaded active active Paths remote-fs.targetloaded active active Remote File Systems slices.targetloaded active active Slices sockets.targetloaded active active Sockets swap.targetloaded active active Swap sysinit.targetloaded active active System Initialization timers.targetloaded active active Timers
via:ofollow,noindex" target="_blank">https://www.2daygeek.com/how-to-enable-or-disable-services-on-boot-in-linux-using-chkconfig-and-systemctl-command/
作者:Prakash Subramanian 選題:lujun9972 譯者:way-ww 校對:wxy
本文由LCTT 原創編譯,Linux中國 榮譽推出