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。spa

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

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
混合休眠模式(同時休眠到硬盤並待機)

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

2. systemctl命令實例debug

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
相關文章
相關標籤/搜索