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
|
用來列出能夠啓動或中止的服務列表 |
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