systemctl命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一塊兒。linux
任務 | 舊指令 | 新指令 |
使某服務自動啓動 | chkconfig --level 3 httpd on | systemctl enable httpd.service |
使某服務不自動啓動 | chkconfig --level 3 httpd off | systemctl disable httpd.service |
檢查服務狀態 | service httpd status | systemctl status httpd.service (服務詳細信息) systemctl is-active httpd.service (僅顯示是否 Active) |
顯示全部已啓動的服務 | chkconfig --list | systemctl list-units --type=service |
啓動某服務 | service httpd start | systemctl start httpd.service |
中止某服務 | service httpd stop | systemctl stop httpd.service |
重啓某服務 | service httpd restart | systemctl restart httpd.service |
CentOS 7.x開始,CentOS開始使用systemd服務來代替daemon,原來管理系統啓動和管理系統服務的相關命令所有由systemctl命令來代替。centos
daemon命令 | systemctl命令 | 說明 |
---|---|---|
service [服務] start | systemctl start [unit type] | 啓動服務 |
service [服務] stop | systemctl stop [unit type] | 中止服務 |
service [服務] restart | systemctl restart [unit type] | 重啓服務 |
此外還有二個systemctl參數沒有與service命令參數對應網絡
應用舉例:ssh
#啓動網絡服務 systemctl start network.service #中止網絡服務 systemctl stop network.service #重啓網絡服務 systemctl restart network.service #查看網絡服務狀態 systemctl status network.serivce
daemon命令 | systemctl命令 | 說明 |
---|---|---|
chkconfig [服務] on | systemctl enable [服務] | 設置服務開機啓動 |
chkconfig [服務] off | systemctl disable [服務] | 設備服務禁止開機啓動 |
應用舉例:socket
#中止cup電源管理服務 systemctl stop cups.service #禁止cups服務開機啓動 systemctl disable cups.service #查看cups服務狀態 systemctl status cups.service #從新設置cups服務開機啓動 systemctl enable cups.service
命令格式:工具
systemctl [command] [–type=TYPE] [–all]
oop
參數詳解:spa
command
- list-units:依據unit列出全部啓動的unit。加上 –all 纔會列出沒啓動的unit; - list-unit-files:依據/usr/lib/systemd/system/ 內的啓動文件,列出啓動文件列表.net
–type=TYPE
- 爲unit type, 主要有service, socket, targethibernate
應用舉例:
systemctl命令 | 說明 |
---|---|
systemctl | 列出全部的系統服務 |
systemctl list-units | 列出全部啓動unit |
systemctl list-unit-files | 列出全部啓動文件 |
systemctl list-units –type=service –all | 列出全部service類型的unit |
systemctl list-units –type=service –all grep cpu | 列出 cpu電源管理機制的服務 |
systemctl list-units –type=target –all | 列出全部target |
systemctl命令 | 說明 |
---|---|
systemctl is-active [服務] | 查看服務是否運行 |
systemctl is-enable [服務] | 查看服務是否設置爲開機啓動 |
systemctl mask [服務] | 註銷指定服務 |
systemctl unmask [服務] | 取消註銷指定服務 |
應用舉例:
#查看網絡服務是否啓動 systemctl is-active network.service #檢查網絡服務是否設置爲開機啓動 systemctl is-enable network.service #中止cups服務 systemctl stop cups.service #註銷cups服務 systemctl mask cups.service #查看cups服務狀態 systemctl status cups.service #取消註銷cups服務 systemctl unmask cups.service
init命令 | systemctl命令 | 說明 |
---|---|---|
init 0 | systemctl poweroff | 系統關機 |
init 6 | systemctl reboot | 從新啓動 |
與開關機相關的其餘命令:
systemctl命令 | 說明 |
---|---|
systemctl suspend | 進入睡眠模式 |
systemctl hibernate | 進入休眠模式 |
systemctl rescue | 強制進入救援模式 |
systemctl emergency | 強制進入緊急救援模式 |
init級別 | systemctl target |
---|---|
0 | shutdown.target |
1 | emergency.target |
2 | rescure.target |
3 | multi-user.target |
4 | 無 |
5 | graphical.target |
6 | 無 |
此外仍是一個getty.target用來設置tty的數量。
命令格式:
systemctl [command] [unit.target]
參數詳解:
command:
systemctl命令 | 說明 |
---|---|
systemctl get-default | 得到當前的運行級別 |
systemctl set-default multi-user.target | 設置默認的運行級別爲mulit-user |
systemctl isolate multi-user.target | 在不重啓的狀況下,切換到運行級別mulit-user下 |
systemctl isolate graphical.target | 在不重啓的狀況下,切換到圖形界面下 |
命令格式:
systemctl list-dependencies [unit] [–reverse]
–reverse
是用來檢查尋哪一個unit使用了這個unit
應用舉例:
#得到當前運行級別的target [root@www ~]# systemctl get-default multi-user.target #查看當前運行級別target(mult-user)啓動了哪些服務 [root@www ~]# systemctl list-dependencies default.target ├─abrt-ccpp.service ├─abrt-oops.service ├─vsftpd.service ├─basic.target │ ├─alsa-restore.service │ ├─alsa-state.service .....(中間省略)..... │ ├─sockets.target │ │ ├─avahi-daemon.socket │ │ ├─dbus.socket .....(中間省略)..... │ ├─sysinit.target │ │ ├─dev-hugepages.mount │ │ ├─dev-mqueue.mount .....(中間省略)..... │ └─timers.target │ └─systemd-tmpfiles-clean.timer ├─getty.target │ └─getty@tty1.service └─remote-fs.target #查看哪些target引用了當前運行級別的target [root@www ~]# systemctl list-dependencies --reverse default.target └─graphical.target
在使用systemctl關閉網絡服務時有一些特殊 須要同時關閉unit.servce和unit.socket
使用systemctl查看開啓的sshd服務
[root@www system]# systemctl list-units --all | grep sshd sshd-keygen.service loaded inactive dead OpenSSH Server Key Generation sshd.service loaded active running OpenSSH server daemon sshd.socket loaded inactive dead OpenSSH Server Socket
能夠看到系統同時開啓了 sshd.service
和 sshd.socket
, 若是隻閉關了 sshd.service
那麼 sshd.socket
還在監聽網絡,在網絡上有要求鏈接 sshd 時就會啓動 sshd.service
。所以若是想徹底關閉sshd服務的話,須要同時停用 sshd.service
和 sshd.socket
。
systemctl stop sshd.service systemctl stop sshd.socket systemctl disable sshd.service sshd.socket
因爲centos 7.x默認沒有安裝net-tools,所以沒法使用netstat 來查看主機開發的商品。須要經過yum安裝來得到該工具包:
yum -y install net-tools
查看是否關閉22端口
netstat -lnp |grep sshd
Centos 7.x 中取消了iptables, 用firewall取而代之。要關閉防火牆並禁止開機啓動服務使用下面的命令:
systemctl stop firewalld.service systemctl disable firewalld.service