在CentOS7(RHEL7)之後,服務從原來的由systemV管理機制升級到了systemd。網絡
在sysV中,全部的服務腳本都放在/etc/rc.d/init.d/中,可使用/etc/rc.d/init.d/daemon [start|stop|restart|reload|status]方式來管理服務,默認的運行級別在/etc/inittab文件中定義,當系統以某個運行級別啓動時,會運行/etc/rc.d/rcN.d/(其中N範圍爲0~6)目錄中全部的腳本,而這些腳本的命名都是Knnxxxxx或Snnxxxxx,其中S表示系統啓動時調用,K表示系統終止時調用,nn是00~99的數字,數字的大小決定了腳本運行的順序,最後的xxxxx爲腳本的名稱(長度任意),這些目錄裏的文件都是指向init.d目錄中腳本的軟鏈接,由於各個運行級別的所需的服務可能存在交集,因此這樣能節省硬盤使用空間。socket
在sysV中,服務被分紅兩大類,一類是可獨立運行的服務,另外一類是受xinetd管理的服務,而xinetd自己是一個獨立運行的服務,用來負責管理一些不經常使用的服務,當這些服務須要被使用時,由xinetd來喚醒它們,當服務使用完後,這些服務會被結束以減小系統資源的佔用。函數
在sysV中,定義了6個運行級別,分別是:hibernate
runlevel0 = 關機rest
runlevel1 = 單用戶模式,僅rootblog
runlevel2 = 帶網絡的單用戶模式內存
runlevel3 = 多用戶模式,字符界面,標準模式資源
runlevel4 = 保留get
runlevel5 = 多用戶模式,圖形界面,X11(X Window)it
runlevel6 = 重啓
上文中提到的文件和目錄的截圖:(RHEL7)
/etc/inittab:
/etc/rc.d/:(rc.local是一個腳本文件,裏面定義了用戶自定義啓動的程序)
/etc/rc.d/rc.local:
/etc/rc.d/init.d/:(文件functions定義了不少函數,供給本目錄裏的腳本調用,而文件README是一個說明文件,主要說明「如今的服務由systemd管理,再也不推薦使用這些腳本」,剩下的文件都是對應服務的腳本文件)
/etc/rc.d/rc3.d/:
在systemd中,全部的服務腳本都稱爲unit,主要分紅6類:.service, .socket, .target, .path, snapshot, .timer,它們都存放在/usr/lib/systemd/system/目錄中。
在systemd中,統一採用systemctl命令來管理全部的服務,主要用法:
systemctl [start|stop|restart|reload|status|is-active|is-enable|enable|disable|mask|umask] 服務名.類型 (當服務爲servce類型時能夠省略類型,如atd.service能夠簡寫爲atd,其餘的類型不能省略,如talnet.socket)
systemclt set-default|get-default|isolate xxxxx.target 設置默認運行級別|獲取當前的默認運行級別|不重啓切換當前環境 (什麼是環境呢,target類型的服務都爲環境,當運行或切換(須要使用isolate而不能使用start)一個環境時每每會伴隨着啓動不少其餘的服務用以支持這個環境,最多見的環境就是字符界面和圖形界面,好比想從如今的字符界面臨時切換到圖形界面,使用systemctl isolate graphical.tatget)
在systemd中,運行級別由/etc/systemd/system/default.target定義,這個文件自己是一個軟鏈接,若是它指向graphical.targer那麼默認的運行級別就是圖形界面。
在systemd中,爲了向下兼容也提供了一些target來映射sysV中的運行級別,見下圖,
會發現,有一些以.wants結尾的目錄,上文已經說過了環境的變化每每會伴隨着不少其餘服務,而wants目錄就是當target類型的服務切換以後自動運行的其餘服務。
利用systemctl查看服務:
systemctl 列出全部已啓動的服務
systemctl list-units 同上
systemctl list-units --all 列出全部服務,包括沒啓動的
systemctl list-unit-files 列出/usr/lib/systemd/system/目錄內全部的服務文件
systemctl list-units --type=service --all 列出全部service類型的服務,其中--type的取值還能夠是target,socket等等
systemctl list-units --type=service --all|grep -i cpu 列出全部和cpu相關的服務
利用systemctl快速改變環境:
systemctl poweroff 關機(至關於systemctl isolate poweroff.target)
systemctl reboot 重啓
systemctl suspend 暫停/睡眠,將系統數據寫入內存,同時將大部分硬件關閉,等待喚醒(至關於Windows下的睡眠)
systemctl hibernate 休眠,將系統數據寫入硬盤,而後關機
systemctl rescue 進入救援模式
systemctl emergency 進入緊急模式,比救援模式更強更完全