CentOS 7.x開始,CentOS開始使用systemd服務來代替daemon,原來管理系統啟動和管理系統服務的相關命令全部由systemctl命令來代替。 1、原來的 service 命令與 systemctl 命令對比 daemon命令 systemctl命令 說明 service [服務] ...
CentOS 7.x開始,CentOS開始使用systemd服務來代替daemon,原來管理系統啟動和管理系統服務的相關命令全部由systemctl命令來代替。
1、原來的 service 命令與 systemctl 命令對比
daemon命令 |
systemctl命令 |
說明 |
service [服務] start |
systemctl start [unit type] |
啟動服務 |
service [服務] stop |
systemctl stop [unit type] |
停止服務 |
service [服務] restart |
systemctl restart [unit type] |
重啟服務 |
此外還是二個systemctl參數沒有與service命令參數對應
- status:參數來查看服務運行情況
- reload:重新載入服務,載入更新後的配置文件(並不是所有服務都支持這個參數,比如network.service)
應用舉例:
#啟動網路服務
systemctl start network.service
#停止網路服務
systemctl stop network.service
#重啟網路服務
systemctl restart network.service
#查看網路服務狀態
systemctl status network.serivce
2、原來的chkconfig 命令與 systemctl 命令對比
2.1、設置開機啟動/不啟動
daemon命令 |
systemctl命令 |
說明 |
chkconfig [服務] on |
systemctl enable [unit type] |
設置服務開機啟動 |
chkconfig [服務] off |
systemctl disable [unit type] |
設備服務禁止開機啟動 |
應用舉例:
#停止cup電源管理服務
systemctl stop cups.service
#禁止cups服務開機啟動
systemctl disable cups.service
#查看cups服務狀態
systemctl status cups.service
#重新設置cups服務開機啟動
systemctl enable cups.service
2.2、查看系統上上所有的服務
命令格式:
systemctl [command] [–type=TYPE] [–all]
參數詳解:
command - list-units:依據unit列出所有啟動的unit。加上 –all 才會列出沒啟動的unit; - list-unit-files:依據/usr/lib/systemd/system/ 內的啟動文件,列出啟動文件列表
–type=TYPE - 為unit type, 主要有service, socket, target
應用舉例:
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 |
3、systemctl特殊的用法
systemctl命令 |
說明 |
systemctl is-active [unit type] |
查看服務是否運行 |
systemctl is-enable [unit type] |
查看服務是否設置為開機啟動 |
systemctl mask [unit type] |
註銷指定服務 |
systemctl unmask [unit type] |
取消註銷指定服務 |
應用舉例:
#查看網路服務是否啟動
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
4、init 命令與systemctl命令對比
init命令 |
systemctl命令 |
說明 |
init 0 |
systemctl poweroff |
系統關機 |
init 6 |
systemctl reboot |
重新啟動 |
與開關機相關的其他命令:
systemctl命令 |
說明 |
systemctl suspend |
進入睡眠模式 |
systemctl hibernate |
進入休眠模式 |
systemctl rescue |
強制進入救援模式 |
systemctl emergency |
強制進入緊急救援模式 |
5、設置系統運行級別
5.1、運行級別對應表
init級別 |
systemctl target |
0 |
shutdown.target |
1 |
emergency.target |
2 |
rescure.target |
3 |
multi-user.target |
4 |
無 |
5 |
graphical.target |
6 |
無 |
此外還是一個getty.target用來設置tty的數量。
5.2、設置運行級別
命令格式:
systemctl [command] [unit.target]
參數詳解:
command:
- get-default :取得當前的target
- set-default :設置指定的target為預設的運行級別
- isolate :切換到指定的運行級別
- unit.target :為5.1表中列出的運行級別
systemctl命令 |
說明 |
systemctl get-default |
獲得當前的運行級別 |
systemctl set-default multi-user.target |
設置預設的運行級別為mulit-user |
systemctl isolate multi-user.target |
在不重啟的情況下,切換到運行級別mulit-user下 |
systemctl isolate graphical.target |
在不重啟的情況下,切換到圖形界面下 |
6、使用systemctl分析各服務之前的依賴關係
命令格式:
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
└─remote-fs.target
#查看哪些target引用了當前運行級別的target[root@www ~]# systemctl list-dependencies --reverse
default.target
└─graphical.target
7、關閉網路服務
在使用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
8、關閉防火牆firewall
Centos 7.x 中取消了iptables, 用firewall取而代之。要關閉防火牆並禁止開機啟動服務使用下麵的命令:
systemctl stop firewalld.service
systemctl disable firewalld.service