歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 太有用了!用systemd命令來管理Linux系統!

太有用了!用systemd命令來管理Linux系統!

日期:2017/2/28 14:28:13   编辑:Linux教程

Systemd是一種新的linux系統服務管理器。

它替換了init系統,能夠管理系統的啟動過程和一些系統服務,一旦啟動起來,就將監管整個系統。在本文中,我們用的是安裝有 systemd 216 版本的centos 7.0,其最新版本可以從 freedesktop.org 下載得到。

Linux 引導方式systemd upstart sysV http://www.linuxidc.com/Linux/2014-01/95555.htm

為什麼systemd會被如此迅速的采用? http://www.linuxidc.com/Linux/2014-08/105789.htm

systemd 與 sysVinit 彩版對照表 http://www.linuxidc.com/Linux/2014-09/106455.htm

Linux Systemd——在RHEL/CentOS 7中啟動/停止/重啟服務 http://www.linuxidc.com/Linux/2014-08/105975.htm

因為linux操作系統裡出現的這一個新人,PID 1被“systemd”占據了,這能通過pstree命令看到。

  1. [root@linoxide ~]# pstree

那麼現在讓我們來探索systemd擅長什麼,它又有多大的可能性成為sysVinit的新的替代品。

1. 更快啟動

sysvinit一次一個串行地啟動進程。

而Systemd則並行地啟動系統服務進程,並且最初僅啟動確實被依賴的那些服務,極大地減少了系統引導的時間。

你可以用下面的命令看到系統引導用時:

  1. [root@linoxide ~]# systemd-analyze

使用 time 參數也能夠顯示同樣的內容。

  1. [root@linoxide ~]# systemd-analyze time

如果你想以進程初始化所占用時間排序打印出所有正在運行的單元列表,那麼systemd-analyze命令可以幫助你完成這個任務。

  1. [root@linoxide ~]# systemd-analyze blame

上面的截屏只顯示了小部分進程,你可以就像less分頁器那樣用箭頭滾動列表。

2. systemctl 命令

systemctl命令是自systemd出現以來被廣泛討論的命令。你可以通過這個命令管理你的整個系統,讓我們通過探究這個命令來更進一步。

2.1 列出單元

systemctl命令可以帶上list-units,也可以什麼選項都不帶來列出所有正在運行的單元。

  1. [root@linoxide ~]# systemctl

  1. [root@linoxide ~]# systemctl list-units

2.2 列出失敗的單元

運行失敗的單元可以用帶--failed選項的命令顯示出來。

  1. [root@linoxide ~]# systemctl --failed

你可以在這篇文章很多地方看到systemctl的用法。

3. 管理服務

讓我們來看看systemd是怎麼管理系統服務的。

3.1 激活的服務

所有被激活的服務可以同下面這條命令來查看。

  1. [root@linoxide ~]# systemctl list-units -t service

3.2 服務狀態

在sysvinit中,我們可以用“service”命令來管理服務,但在systemd中,我們用systemctl這個命令。 我們可以用下面這個命令來查看服務是否在運行。

  1. [root@linoxide ~]# systemctl status dnsmasq

3.3 啟動一個服務

用下面這條命令來啟動服務。

  1. [root@linoxide ~]# systemctl start dnsmasq

對應於service命令,這個命令不進行輸出。但是毋庸置疑,我們可以通過再次查看這個剛剛被啟動的服務的status(狀態)來確認他是否被成功地啟動了。

3.4 停止一個服務

現在聰明的你一定知道怎麼在systemd下用命令來關閉服務了吧。

  1. [root@linoxide ~]# systemctl stop dnsmasq

3.5 重啟一個服務

類似的,重啟系統服務是用‘systemctl restart’來管理的。

  1. [root@linoxide ~]# systemctl restart dnsmasq

3.6 重新加載一個服務

在我們需要重新加載服務的配置文件又不想重啟這個服務(例如ssh)時,我們可以用這個命令。

  1. [root@linoxide ~]# systemctl reload sshd

雖然上述幾個命令的語法是可以工作的,但是官方文檔建議我們用下面這種語法形式來運行命令(LCTT 譯注,即使用在服務名後面跟上“.service”的完整名稱):

  1. [root@linoxide ~]# systemctl status dnsmasq.service

!click_multi!

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-09/106490p2.htm

Copyright © Linux教程網 All Rights Reserved