Linux服務管理之系統管理員須要掌握的命令

systemd的主要命令行工具是systemctl。大多數Linux系統管理員應該都已經很是熟悉系統服務和init系統管理,好比service,chkconfig和telinit命令的使用。systemd也完成一樣的管理任務,只是命令工具systemctl的語法有所不一樣而已。docker

1. sysvinit和systemd的命令對比列表shell

下表幫助系統管理員瞭解systemd中能夠取代原先sysvinit工做流程的命令。注意:service和chkconfig這兩個命令在systemd環境下依然可用。這裏以sshd服務爲例:服務器

sysvinit命令                   systemd命令                     備註  
service sshd start systemctl start sshd.service 用來啓動一個服務(並不會重啓現有的服務)
service sshd stop systemctl stop sshd.service 用來中止一個服務(並不會重啓現有的服務)
service sshd restart systemctl restart sshd.service 用來中止並啓動一個服務
service sshd reload systemctl reload sshd.service 當支持時,從新裝載配置文件而不中斷等待操做
service sshd condrestart systemctl condrestart sshd.service 若是服務正在運行,那麼重啓它
service sshd status systemctl status sshd.service 彙報服務是否正在運行
ls /etc/rc.d/init.d/

systemctl list-unit-files --type=servicessh


ls /lib/systemd/system/*.service
/etc/systemd/system/*.service工具

用來列出能夠啓動或中止的服務列表
chkconfig sshd on systemctl enable sshd.service 在下次啓動時或知足其餘觸發條件時設置服務爲啓動
chkconfig sshd off systemctl disable sshd.service 在下次啓動時或知足其餘觸發條件時設置服務爲禁用
chkconfig sshd systemctl is-enabled sshd.service 用來檢查一個服務在當前環境下被配置爲啓用仍是禁用
chkconfig --list systemctl list-unit-files --type=service(推薦)
ls /etc/systemd/system/*.service
輸出在各個運行級別下服務的啓用和禁用狀況
chkconfig sshd --list ls /etc/systemd/system/*.wants/sshd.service 用來列出該服務在哪些運行級別下啓用和禁用
chkconfig sshd --add systemctl daemon-reload 當建立新服務文件或者變動設置時使用

注意:以上列出的全部/sbin/service 和 /sbin/chkconfig 在systemd環境下依然能夠工做,而且在必要的狀況下將會被翻譯成原生的等效命令。惟一的例外是 chkconfig --list。hibernate

sysvinit 和 systemd 改變運行級別命令對比表:命令行

sysvinit命令                  systemd命令                        備註
telinit 3 systemctl isolate multi-user.target
或者
systemctl isolate runlevel3.target OR telinit 3
改變至多用戶運行級別
sed s/^id:.*:initdefault:/id:3:initdefault:/ ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target 設置在下一次啓動時使用多用戶運行級別

sysvinit 和 systemd 電源管理命令對比表:翻譯

sysvinit命令                                              systemd命令             操做
reboot systemctl reboot 重啓機器
halt -p systemctl poweroff 關機
echo standby > /sys/power/statc systemctl suspend 待機
echo platform > /sys/power/dist; echo dist > /sys/power/state     
或者
echo shutdown > /sys/power/disk;echo dist > /sys/power/state
systemctl hibernate 休眠
  systemctl hybrid-sleep 混合休眠模式(同時休眠到硬盤並待機)

關機命令不是每一個登陸用戶在任何狀況下均可以執行的,通常只有管理員才能夠關機。debug

2. systemctl命令實例調試

2.1 systemctl的基本用法

  • systemctl——列出全部已加載的單元及其狀態(單元是任務/服務的術語)。

  • systemctl list-units——列出全部單元。

  • systemctl start [NAME...]——啓動(激活)一個或多個單元。

  • systemctl stop [NAME...]——中止(停用)一個或多個單元。

  • systemctl disable [NAME...]——禁用一個或多個單元文件。

  • systemctl list-unit-files——顯示全部已安裝的單元文件及其狀態。

  • systemctl --failed——顯示啓動過程當中哪些單元出現故障。

  • systemctl --type=xxx——類型過濾器;類型多是:服務,掛載點,設備,套接字和啓動目標。

  • systemctl enable debug-shell.service——啓動TTY 9上的shell,用於調試。

切換運行級別,重啓和關閉也用systemctl來處理:

  • systemctl isolate graphical.target——切換到運行級別5,X服務器在運行級別5運行。

  • systemctl isolate multi-user.target——切換到運行級別3和TTY,不帶X圖形界面。

  • systemctl reboot——關閉和重啓系統。

  • systemctl poweroff——關閉系統。

除了用於切換運行級別的命令外,全部這些命令均可以用普通用戶權限執行。

2.2 實例

例出全部已加載的單元及其狀態:

systemctl

整個輸出界面包括5列:

  • UNIT——顯示服務名稱

  • LOAD——顯示該服務是否已經加載。

  • ACTIVE——顯示高級單元是否已經激活

  • SUB——顯示低級單元是否已經激活

  • DESCRIPTION——顯示服務功能說明

顯示httpd服務的詳細信息:

systemctl status httpd.service

以httpd服務爲例,啓動:

systemctl start httpd.service

中止:

systemctl stop httpd.service

顯示一個服務的相互依賴狀況:

systemctl list-dependencies nfs-server.service

在開機時啓動一個服務,如例:

systemctl enable foo.service

在開機時禁用一個服務,如例:

systemctl disable foo.service

檢查一個服務是否已開機啓用,如例:

systemctl is-enabled foo.service; echo $?

0表示已開機啓用,1表示沒有開機啓用。在Fedora 17中,除了返回值外,相應的「enable」或"disable"也會顯示到標準輸出上。

示例,修改了httpd.service後,經過如下命令就能讓系統使用新的設置:

systemctl daemon-reload
systemctl restart httpd.service

示例,檢查一個服務的運行狀況,以docker例:

systemctl status docker.service

檢查資源使用狀況,包括CPU,內存,IO:

systemd-cgtop

這使咱們能更輕鬆地看出哪一個服務使用了多少內存,CPU等。

以樹形遞歸形式顯示選中的Linux控制組羣結構層次:

systemd0cgls

顯示服務之間的依賴關係,例如以下命令:

systemctl list-dependencies

殺死一個服務進程,使用以下命令,以httpd爲例:

systemctl kill httpd

使用mask再也不加載服務單元或從新加載服務,以防火牆爲例:

再也不加載防火牆服務:

systemctl mask firewalld.service

從新加載防火牆服務:

systemctl unmask firewalld.service
相關文章
相關標籤/搜索