1. 類型mysql
systemd開啓和監督整個系統是基於unit的概念。unit是由一個與配置文件名同名的名字和類型組成的(例如:avahi.service unit有一個具備相同名字的配置文件,它是守護進程avahi的一個封裝單元)。unit有如下幾種類型:sql
service:表明一個後臺服務進程,好比 mysqld。這是最經常使用的一類。shell
socket:此類配置單元封裝系統和互聯網中的一個套接字。當下,systemd支持流式,數據報和連續包的 AF_INET,AF_INET6,AF_UNIX socket。每一個套接字配置單元都有一個相應的服務配置單元,相應的服務在第一個「鏈接」進入套接字時就會啓動(例如:nscd.socket在有新鏈接後便啓動nscd.service)。數據庫
device:此類配置單元封裝一個存在於Linux設備樹中的設備。每一個使用udev規則標記的設備都將會在systemd中做爲一個設備配置單元出現。網絡
mount:此類配置單元封裝文件系統結構層次中的一個掛載點。systemd將對這個掛載點進行監控和管理。好比,能夠在啓動時自動將其掛載,能夠在某些條件下自動卸載。systemd會將/etc/fstab中的條目都轉換爲掛載點,並在開機時處理。socket
automount:此類配置單元封裝系統結構層次中的一個自掛載點。每一個自掛載配置單元對應一個掛載配置單元,當該自動掛載點被訪問時,systemd執行掛載點中定義的掛載行爲。ui
Swap:和掛載配置單元相似,交換配置單元用來管理交換分區。用戶能夠用交換配置單元來定義系統中的交換分區,可讓這些交換分區在啓動時被激活。spa
target:此類配置單元爲其餘配置單元進行邏輯分組。它們自己實際上並不作什麼,只是引用其餘配置單元而已,這樣即可以對配置單元作一個統一的控制,就能夠實現你們都很是熟悉的運行級別的概念。好比,想讓系統進入圖形化模式,須要運行許多服務和配置命令,這些操做都由一個個的配置單元表示,將全部的這些配置單元組合爲一個目標(target),就表示須要將這些配置單元所有執行一遍,以便進入目標所表明的系統運行狀態(例如:multi-user.target至關於在傳統使用sysv的系統中運行級別5)。繼承
timer:定時器配置單元用來定時觸發用戶定義的操做。這類配置單元取代了atd,crond等傳統的定時服務。進程
snapshot:與target配置單元類似,快照是一組配置單元,它保存了系統當前的運行狀態。
每一個配置單元都有一個對應的配置文件,好比一個MySQL服務對應一個mysql.service文件。這種配置文件的語法很是簡單,用戶不須要再編寫和維護複雜的sysv腳本了。
2. 依賴關係
雖然systemd將大量的啓動工做解除了依賴,使得它們能夠並行啓動。但仍是存在一些任務,它們之間存在天生的依賴關係,不能用「套接字激活」(socket activation),D-Bus activation和autofs三大方法來解除依賴。好比,掛載必須等待掛載點在文件系統中被建立; 掛載也必須等待相應的物理設備就緒。爲了解決這類依賴問題,systemd的配置單元之間能夠彼此定義依賴關係。好比,unit A依賴unit B,能夠在unit B的定義中用「require A」來表示,這樣systemd就會保證先啓動A再啓動B。systemd能保證事務完整性。systemd的事務概念和數據庫中的有所不一樣,主要是爲了保證多個依賴的配置單元之間沒有環形引用。若是存在循環依賴,那麼systemd將沒法啓動任意一個服務。此時,systemd將會嘗試解決這個問題,由於配置單元之間的依賴關係有兩種:requireds是強依賴,wants則是弱依賴,systemd將去掉wants關鍵字指定的依賴看看是否能打破循環。若是沒法修復,systemd會報錯。systemd可以自動檢測和修復這類配置錯誤,極大地減輕了管理員的拔錨負擔。
3. target和運行級別
systemd用目標(target)替代了運行級別的概念,提供了更大的靈活性,好比能夠繼承一個已有的目標,並添加其餘服務來建立本身的目標。下表展現sysvinit運行級別和systemd目標的對應關係:
sysvinit運行級別 |
systemd目標 |
備註 |
0 |
runlevel0.target,poweroff.target |
關閉系統 |
1,s,single |
runlevel1.target,rescue.target |
單用戶模式 |
2,4 |
runlevel2.target,runlevel4.target,multi-user.target |
用戶定義/域特定運行級別。默認等同於3 |
3 |
runlevel3.target,multi-user.target |
多用戶,非圖形化。用戶能夠經過多個控制檯或網絡登陸 |
5 |
runlevel5.target,graphical.target |
多用戶,圖形化。一般爲全部運行級別3的服務外加圖形化登陸 |
6 |
runlevel6.target,rebooot.target |
重啓 |
emergency |
emergency.target |
急救模式(Emergency shell) |