傳統的init (rhel5/6) 有兩個缺陷:bash
1) 服務串行啓動,服務之間存在依賴關係,必須前一個服務啓動完,才能啓動下一個.ssh
2) 服務啓動依賴腳本,全部功能依賴腳本怎麼寫,耗時,效率差socket
Systemd ,CentOS7的init程序,功能極爲強大,內涵多個模塊,而且支持以下特性:ide
1) 支持多種服務啓動機制,以實現服務並行啓動佈局
i. 能夠基於sockt 的激活機制,啓動時不須要等服務啓動起來,systemd建立相應的socket監聽端口,僞裝」服務」啓動了,待有真正訪問時再激活服務.post
ii. 能夠基於Bus的激活機制,發送BUS信號僞裝服務起來了...spa
iii. 能夠基於path的激活機制,systemd能夠監視某個當某個路徑,當路徑或者其屬性改變時激活服務hibernate
iv. 能夠基於Device的激活機制,監控硬件設備狀態,當其變爲可用時,觸發相應的服務,例如插入U盤啓動自動掛載服務.rest
2) 支持按需激活服務,例如基於Socket的激活機制日誌
3) 支持系統狀態快照,支持將服務的進程數據保存至硬盤,下次啓動時可直接恢復
Unit的定義:
systemd能夠管理全部的系統資源,不一樣的資源統稱爲Unit,這是個配置文件,文件中包含系統服務,監聽Socket,服務之間的依賴關係,系統快照... ,Systemd經過此文件控制資源如何啓動,中止.
Unit類型:
Service Unit 以 .service結尾,服務的管理配置文件,相似於服務腳本
Target Unit 以 .target 結尾,是一堆service文件的集合
Device Unit 以.device 結尾,用於定義內核的設備文件
Mount Unit 以.mount結尾,用於定義文件系統的掛載點
Socket Unit 以.socke結尾,用於標示進程間的通訊socket文件
Snapshot Unit 以.snapshot結尾,管理快照的Unit
Swap Unit 以.swap標識swap設備的Unit
AutoMount Unit 以automont結尾,文件系統自動掛載.
服務控制命令:
systemctl start name.service #啓動服務
systemctl status name.service #查看服務的狀態
systemctl stop name.service #中止服務
systemctl restart name.service #重啓服務
systemctl try-restart name.service #嘗試重啓服務,若是服務啓動則重啓,不然不操做.
systemctl enable name.service #將服務設置爲開機自啓
systemctl disable name.service #將服務關閉開機自啓
systemctl mask name.service #將服務連接至/dev/null,禁止開機自啓
systemctl unmask name.service #恢復服務連接,與mask命令相反
systemctl list-units --type service #查看當前啓動的服務
systemctl list-units --type service --all #查看全部的服務
systemctl list-unit-files --type service #查看全部開機自啓的服務
systemctl is-enable name.server #查看當前服務是否開機啓動
systemctl is-active name.server #查看當前服務是否激活啓動
運行級別控制命令:
rhel5/6與7的運行級別對應關係:
rhel5/6的運行級別 |
systemd兼容級別 |
systemd相對應的運行級別 |
runlevel0 |
runlevel0.target |
poweroff.target |
runlevel1 |
runlevel1.target |
rescue.target |
runlevel2 |
runlevel2.target |
multi-user.target |
runlevel3 |
runlevel3.target |
multi-user.target |
runlevel4 |
runlevel4.target |
multi-user.target |
runlevel5 |
runlevel5.target |
graphical.target |
runlevel6 |
runlevel6.target |
reboot.target |
systemctl list-units --type target #查看已激活的target
systemctl list-units --type target --all #查看全部target
systemctl list-unit-files --type target #查看開機啓動的target
systemctl get-default #查看系統默認啓動的target(運行級別)
systemctl set-default name.target #設置默認的target(運行級別)
systemctl isolate name.target #切換運行級別
系統控制命令:
systemctl halt/poweroff #關機
systemctl reboot #重啓
systemctl rescue #進入救援模式
systemctl emergency #進入緊急模式,比rescue更完全,服務不啓動,系統不初始化,驅動不加載
systemctl suspend #暫停系統,相似休眠
systemctl hibernate #冬眠
systemctl hybrid-sleep #混合睡眠
systemd-analyze命令主要用於分析啓動服務所須要消耗的時間.
systemd-analyze #查看啓動須要消耗的總時間
[root@localhost ~]# systemd-analyze Startup finished in 1.521s (kernel) + 1.361s (initrd) + 34.452s (userspace) = 37.334s
|
systemd-analyze blame #查看每一個服務啓動所須要消耗的時間
[root@localhost ~]# systemd-analyze Startup finished in 1.521s (kernel) + 1.361s (initrd) + 34.452s (userspace) = 37.334s [root@localhost ~]# systemd-analyze blame 14.371s kdump.service 7.387s NetworkManager-wait-online.service 7.157s postfix.service 4.342s firewalld.service 3.346s systemd-udev-settle.service 2.940s tuned.service 1.777s libvirtd.service 1.659s network.service 1.106s NetworkManager.service 946ms sshd.service ... ...
|
systemd統一管理全部的Unit的啓動日誌,只須要使用journalctl一個命令,便可查看全部unit日誌(內核與應用程序服務).
journalctl #查看本次開機全部unit的啓動日誌信息
journalctl -f #實時監控
journalctl -k #僅監控內核日誌
journalctl -u httpd.service #查看某個服務的啓動日誌信息
journalctl -u httpd.service -f #實時查看httpd的日誌信息
journalctl /bin/bash #查看有關該應用程序的日誌信息
localectl 命令 用於查看修改本地化的一些配置,例如系統語言,鍵盤映射,佈局等
localectl #查看本地化信息
[root@localhost ~]# localectl System Locale: LANG=en_GB.utf8 VC Keymap: us X11 Layout: us |
使用相應的命令可進行更改:
[root@localhost ~]# localectl set- set-keymap set-locale set-x11-keymap |
[root@localhost ~]# timedatectl
Local time: Tue 2018-04-24 07:16:35 PDT
Universal time: Tue 2018-04-24 14:16:35 UTC
RTC time: Tue 2018-04-24 14:16:35
Time zone: America/Los_Angeles (PDT, -0700)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2018-03-11 01:59:59 PST
Sun 2018-03-11 03:00:00 PDT
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2018-11-04 01:59:59 PDT
Sun 2018-11-04 01:00:00 PST