|
Systemctl是systemd用于管理系統(tǒng)和管理服務(wù)的工具。許多現(xiàn)代Linux發(fā)行版,如Ubuntu、Debian、Fedora、Linux Mint、OpenSuSE、Redhat都采用systemd作為默認(rèn)的init系統(tǒng)。 
使用systemctl,可以啟動(dòng)、停止、重新加載、重啟服務(wù)、列出服務(wù)單元、檢查服務(wù)狀態(tài)、啟用/禁用服務(wù)、管理運(yùn)行級(jí)別和電源管理。在本文中將展示如何在Linux中使用systemctl命令來(lái)管理systemd服務(wù)。 *使用systemctl命令 Start/Stop/Restart/Reload 服務(wù)使用systemctl啟動(dòng)服務(wù)時(shí),命令格式:systemctl start [service-name]。例如,啟動(dòng)firewalld服務(wù):[root@localhost ~]# systemctl start firewalld
與以前老版本的linux中的service命令相反,systemctl start命令不輸出任何內(nèi)容。

要停止服務(wù),請(qǐng)使用systemctl stop [service-name]。例如,停止firewalld服務(wù):[root@localhost ~]# systemctl stop firewalld

要重新啟動(dòng)服務(wù),請(qǐng)使用systemctl restart [service-name],例如:[root@localhost ~]# systemctl restart firewalld

要重新加載服務(wù)的配置(例如ssh)而不重新啟動(dòng)它,請(qǐng)使用systemctl reload [service-name],例如:[root@localhost ~]# systemctl reload sshd
 *systemctl檢查服務(wù)狀態(tài)為了查看服務(wù)是否正在運(yùn)行,我們可以使用systemctl status [service-name]來(lái)查看。[root@localhost ~]# systemctl status firewalld
 *檢查服務(wù)是否設(shè)置為開(kāi)機(jī)啟動(dòng)要在引導(dǎo)時(shí)啟用服務(wù),請(qǐng)使用systemctl enable [service-name],例如:[root@localhost ~]# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.

同樣,disable時(shí)取消引導(dǎo)時(shí)啟用服務(wù):[root@localhost ~]# systemctl disable httpd.service

可以使用is-enabled選項(xiàng)檢查開(kāi)機(jī)是否啟動(dòng)該服務(wù),請(qǐng)運(yùn)行:[root@localhost ~]# systemctl is-enabled httpd.service

輸出的內(nèi)容enabled表示開(kāi)機(jī)時(shí)啟動(dòng)該服務(wù),disabled表示開(kāi)機(jī)時(shí)不啟動(dòng)該服務(wù)。要列出所有激活的單元,使用list-units選項(xiàng)。[root@localhost ~]# systemctl list-units

要列出所有活動(dòng)的服務(wù),請(qǐng)運(yùn)行:[root@localhost ~]# systemctl list-units -t service
 *使用systemctl重啟、關(guān)機(jī)系統(tǒng)像poweroff、shutdown命令一樣,systemctl命令可以關(guān)閉系統(tǒng),重啟或進(jìn)入休眠狀態(tài)。[root@localhost ~]# systemctl poweroff
[root@localhost ~]# systemctl reboot
[root@localhost ~]# systemctl hibernate
*使用systemclt管理遠(yuǎn)程系統(tǒng)通常,上述所有systemctl命令都可以用于通過(guò)systemctl命令本身管理遠(yuǎn)程主機(jī)。這將使用ssh與遠(yuǎn)程主機(jī)進(jìn)行通信。如下所示:[root@localhost ~]# systemctl status httpd -H root@192.168.0.12

-H選項(xiàng),指定遠(yuǎn)程主機(jī)的用戶名和密碼。Systemd具有Targets的概念,這些Targets的目的與sysVinit系統(tǒng)中的運(yùn)行級(jí)別相似。sysVinit中的運(yùn)行級(jí)別主要是數(shù)字(0,1,2,-6)。以下是sysVinit中的運(yùn)行級(jí)別及其對(duì)應(yīng)的systemd中的target:0 runlevel0.target, poweroff.target 1 runlevel1.target, rescue.target 2,3,4 runlevel2.target, runlevel3.target,runlevel4.target, multi-user.target 5 runlevel5.target, graphical.target 6 runlevel6.target, reboot.target
如果想要查看當(dāng)前的運(yùn)行級(jí)別,可以使用如下命令:[root@localhost ~]# systemctl get-default multi-user.target

設(shè)置默認(rèn)的運(yùn)行級(jí)別為graphical,命令如下:[root@localhost ~]# systemctl set-default graphical.target Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.

想要列出所有激活的target,可以使用下面命令:[root@localhost ~]# systemctl list-units -t target
 systemd有自己的日志系統(tǒng),稱為journald。它替換了sysVinit中的syslogd。[root@localhost ~]# journalctl

要查看所有引導(dǎo)消息,請(qǐng)運(yùn)行命令journalctl -b[root@localhost ~]# journalctl -b
以下命令實(shí)時(shí)跟蹤系統(tǒng)日志(類(lèi)似于tail -f):[root@localhost ~]# journalctl -f
 查詢系統(tǒng)啟動(dòng)過(guò)程的持續(xù)時(shí)間[root@localhost ~]# systemd-analyze Startup finished in 497ms (kernel) + 1.836s (initrd) + 6.567s (userspace) = 8.901s
<以上代碼可復(fù)制粘貼,可往左滑> 
最后顯示系統(tǒng)啟動(dòng)時(shí)間為8.901秒。查看服務(wù)的啟動(dòng)時(shí)間:[root@localhost ~]# systemd-analyze blame

[root@localhost ~]# hostnamectl
 在本文學(xué)習(xí)了systemctl命令來(lái)管理Linux發(fā)行版中的系統(tǒng)服務(wù)。希望對(duì)你們有所幫助。
|