systemctl command

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

一、原來的 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)

應用舉例:ssh

#啓動網絡服務
systemctl start network.service

#中止網絡服務
systemctl stop network.service

#重啓網絡服務
systemctl restart network.service

#查看網絡服務狀態
systemctl status network.serivce

二、原來的chkconfig 命令與 systemctl 命令對比

2.一、設置開機啓動/不啓動服務

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

2.二、查看系統上上全部的服務

命令格式:工具

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命令 說明
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命令 systemctl命令 說明
init 0 systemctl poweroff 系統關機
init 6 systemctl reboot 從新啓動

與開關機相關的其餘命令:

systemctl命令 說明
systemctl suspend 進入睡眠模式
systemctl hibernate 進入休眠模式
systemctl rescue 強制進入救援模式
systemctl emergency 強制進入緊急救援模式

五、設置系統運行級別

5.一、運行級別對應表

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.二、設置運行級別

命令格式:

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 在不重啓的狀況下,切換到圖形界面下

六、使用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
│ └─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

八、關閉防火牆firewall

Centos 7.x 中取消了iptables, 用firewall取而代之。要關閉防火牆並禁止開機啓動服務使用下面的命令:

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