systemctl


傳統的init (rhel5/6) 有兩個缺陷:

1) 服務串行啓動,服務之間存在依賴關係,必須前一個服務啓動完,才能啓動下一個.

2) 服務啓動依賴腳本,所有功能依賴腳本怎麼寫,耗時,效率差

 

Systemd ,CentOS7init程序,功能極爲強大,內涵多個模塊,並且支持如下特性:

1) 支持多種服務啓動機制,以實現服務並行啓動

i. 可以基於sockt 的激活機制,啓動時不需要等服務啓動起來,systemd創建相應的socket監聽端口,假裝”服務”啓動了,待有真正訪問時再激活服務.

ii. 可以基於Bus的激活機制,發送BUS信號假裝服務起來了...

iii. 可以基於path的激活機制,systemd可以監視某個當某個路徑,當路徑或者其屬性改變時激活服務

iv. 可以基於Device的激活機制,監控硬件設備狀態,當其變爲可用時,觸發相應的服務,例如插入U盤啓動自動掛載服務.

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結尾,文件系統自動掛載.

 

 

2.2.1  systemctl 

服務控制命令:

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/67的運行級別對應關係:

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                                #混合睡眠

2.2.2  systemd-analyze

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

           ... ...

 

 

 

2.2.3  journalctl 

systemd統一管理所有的Unit的啓動日誌,只需要使用journalctl一個命令,即可查看所有unit日誌(內核與應用程序服務).

journalctl                         #查看本次開機所有unit的啓動日誌信息

journalctl  -f                    #實時監控

journalctl -k                    #僅監控內核日誌

journalctl -u httpd.service              #查看某個服務的啓動日誌信息

journalctl -u httpd.service -f           #實時查看httpd的日誌信息

journalctl /bin/bash                     #查看有關該應用程序的日誌信息

 

2.2.4  localectl

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 

 

2.2.5  timedatectl

[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

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章