CentOS7之Systemd管理

Systemd

本章節內容:

CentOS7啟動

Unit介紹

服務管理和查看

啟動排錯

破解口令

修復grub2


1、 CentOS啟動流程:POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs–> /sbin/init

 UEFi或BIOS初始化,運行POST開機自檢

 選擇啟動設備

 引導裝載程序, centos7是grub2

 加載裝載程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg(注:一般上修改grub.cfg配置文件,是直接修改/etc/default/grub,然后使用命令#grub2-mkconfig /boot/grub2/grub.cfg來生成修改

 blob.png

 加載initramfs驅動模塊

 加載內核選項

 內核初始化,centos7使用systemd代替init

 執行initrd.target所有單元,包括掛載/etc/fstab

 從initramfs根文件系統切換到磁盤根目錄

 systemd執行默認target配置,配置文件/etc/systemd/default.target /etc/systemd/system/

 systemd執行sysinit.target初始化系統及basic.target準備操作系統

 systemd啟動multi-user.target下的本機與服務器服務

 systemd執行multi-user.target下的/etc/rc.d/rc.local

 systemd執行multi-user.target下的getty.target及登入服務

 systemd執行graphical需要的服務(此為圖形界面所有)

2、Systemd:系統啟動和服務器守護進程管理器,負責在系統啟動或運行時,激活系統資源,服務器進程和其它進程

3、Systemd新特性:

系統引導時實現服務并行啟動

按需啟動守護進程(端口與服務獨立分離)

自動化的服務依賴關系管理

同時采用socket式與D-Bus總線式激活服務

系統狀態快照

4、Unit介紹:unit表示不同類型的systemd對象,通過配置文件進行標識和配置;文件中主要包含了系統服務、監聽socket、保存的系統快照以及其它與init相關的信息

   配置文件:/usr/lib/systemd/system:每個服務最主要的啟動腳本設置,類似于之前的/etc/init.d/

/run/systemd/system:系統執行過程中所產生的服務腳本,比上面目錄優先運行

/etc/systemd/system:管理員建立的執行腳本,類似于/etc/rc.d/rcN.d/Sxx類的功能,比上面目錄優先運行

5、Unit類型:

systemctl -t help 查看unit類型

blob.png

 service unit:文件擴展名為.service, 用于定義系統服務

 target unit:文件擴展名為.target,用于模擬實現“運行級別”

 device unit:.device, 用于定義內核識別的設備

 mount unit:.mount, 定義文件系統掛載點

 socket unit:.socket, 用于標識進程間通信用的socket文件,也可在系統啟動時,延遲啟動服務,實現按需啟動

 snapshot unit: .snapshot, 管理系統快照

 swap unit:.swap, 用于標識swap設備

 automount unit: .automount,文件系統的自動掛載點

 path unit: .path,用于定義文件系統中的一個文件或目錄使用,常用于當文件系統變化時,延遲激活服務,如:spool 目錄

6、Systemd的特性:

關鍵特性:

基于socket的激活機制:socket與服務程序分離

基于d-bus的激活機制:

基于device的激活機制:

基于path的激活機制:

系統快照:保存各unit的當前狀態信息于持久存儲設備中

向后兼容sysvinit腳本

 不兼容:

systemctl命令固定不變,不可擴展

非由systemd啟動的服務,systemctl無法與之通信和控制

7、Systemd管理服務:

   管理系統服務:CentOS 7: service unit

注意:能兼容早期的服務腳本

  命令:systemctlCOMMAND name.service

  啟動:service name start ==> systemctlstart name.service

  停止:service name stop ==> systemctlstop name.service

  重啟:service name restart ==> systemctlrestart name.service

  狀態:service name status ==> systemctlstatus name.service

   blob.png

   條件式重啟:已啟動才重啟,否則不做操作

service name condrestart==> systemctl try-restart name.service

  重載或重啟服務:先加載,再啟動

systemctl reload-or-restart name.service

  重載或條件式重啟服務:systemctl reload-or-try-restart name.service

  禁止自動和手動啟動:systemctl mask name.service

   blob.png

  取消禁止:systemctl unmask name.service

   blob.png

查看某服務當前激活與否的狀態:systemctl is-active name.service

blob.png

  查看所有的服務:systemctl list-unit-files –type|-t service

  blob.png 

  查看所有激活的服務:systemctl list-units –type service –all|-a

  blob.png

  設定某服務開機自啟(chkconfig命令的對應關系):chkconfig name on ==> systemctlenable name.service   

  設定某服務開機禁止啟動:chkconfig name off ==> systemctl disable name.service

blob.png

查看所有服務的開機自啟狀態:

chkconfig–list ==> systemctl list-unit-files –type service

用來列出該服務在哪些運行級別下啟用和禁用

chkconfig sshd -list ==>ls /etc/systemd/system/*.wants/sshd.service

查看服務是否開機自啟:systemctl is-enabled name.service

其它命令:查看服務的依賴關系:systemctl list-dependencies name.service

blob.png

殺掉進程:systemctlkill 進程名

Systemctl命令事例:

顯示所有單元狀態:systemctl 或systemctl list-units

只顯示服務單元的狀態:systemctl –type=service

  顯示sshd服務單元:systemctl status sshd.service–l

  驗證sshd服務當前是否活動:systemctl is-active sshd

  啟動,停止和重啟sshd服務

systemctl start sshd.service

systemctl stop sshd.service

systemctl restart sshd.service

   重新加載配置:systemctl reload sshd.service

   列出活動狀態的所有服務單元:systemctl list-units –type=service

   列出所有服務單元:systemctl list-units –type=service –all

   查看服務單元的啟用和禁用狀態:systemctl list-unit-files –type=service

   列出失敗的服務:systemctl –failed –type=service

   列出依賴的單元:systemctl list-dependencies sshd

   驗證sshd服務是否開機啟動:systemctl is-enabled sshd

   禁用network,使之不能自動啟動,但手動可以:systemctl disable network

   啟用network:systemctl enable network

   禁用network,使之不能手動或自動啟動:systemclt mask network

   啟用network:systemctl umask network

7、服務狀態:

  systemctl list-units –type service –all顯示狀態

  loaded:Unit配置文件已處理

  active(running):一次或多次持續處理的運行

  active(exited):成功完成一次性的配置

  active(waiting):運行中,等待一個事件

  inactive:不運行

  enabled:開機啟動

  disabled:開機不啟動

  static:開機不啟動,但可被另一個啟用的服務激活

8、運行級別:target units

unit配置文件:.target

ls /usr/lib/systemd/system/*.target

systemctl list-unit-files –type target –all

 blob.png

級別切換:init N ==> systemctl isolate name.target

eg:systemctl isolate multi-user.target

注:只有/lib/systemd/system/multi-user.target t文件中AllowIsolate=yes 才能切換(修改文件需執行systemctl daemon-reload才能生效)

 blob.png

查看target:runlevel 或who -r

systemctl list-units –type target

 blob.png

獲取默認運行級別:/etc/inittab==> systemctl get-default

  blob.png

修改默認級別:/etc/inittab==> systemctl set-default name.target

systemctl set-default multi-user.target

ls -l /etc/systemd/system/default.target

blob.png

9、其他命令:

切換至緊急救援模式:systemctl rescue

 切換至emergency模式:systemctl emergency (注:當切換到緊急救援模式失敗,可以嘗試切換到該模式救援)

 其它常用命令:

傳統命令init,poweroff,halt,reboot都成為systemctl的軟鏈接:

關機:systemctl halt、systemctlpower off

重啟:systemctl reboot

掛起:systemctl suspend

休眠:systemctl hibernate

休眠并掛起:systemctl hybrid-sleep

10、service units 文件格式:

   /etc/systemd/system:系統管理員和用戶使用

/usr/lib/systemd/system:發行版打包者使用

 以“#” 開頭的行后面的內容會被認為是注釋

 相關布爾值,1、yes、on、true 都是開啟,0、no、off、false 都是關閉。

 時間單位默認是秒,所以要用毫秒(ms)分鐘(m)等請顯式說明

   service unit file文件通常由三部分組成

[Unit]:定義與Unit類型無關的通用選項;用于提供unit的描述信息、unit行為及依賴關系等

[Service]:與特定類型相關的專用選項;此處為Service類型

[Install]:定義由“systemctl enable”以及"systemctl disable“命令在實現服務啟用或禁用時用到的一些選項

   blob.png

(1)Unit段的常用選項:

   Description:描述信息

   After:定義unit的啟動次序,表示當前unit應該晚于哪些unit啟動,其功能與Before相反

   Requires:依賴到的其它units,強依賴,被依賴的units無法激活時,當前unit即無法激活

   Wants:依賴到的其它units,弱依賴

   Conflicts:定義units間的沖突關系

(2)Service段的常用選項:Type(定義影響ExecStart及相關參數的功能的unit進程啟動類型)

simple:默認值,這個daemon主要由ExecStart接的指令串來啟動,啟動后常駐于內存中

forking:由ExecStart啟動的程序透過spawns延伸出其他子程序來作為此daemon的主要服務。原生父程序在啟動結束后就會終止

oneshot:與simple類似,不過這個程序在工作完畢后就結束了,不會常駐在內存中

dbus:與simple類似,但這個daemon必須要在取得一個D-Bus的名稱后,才會繼續運作.因此通常也要同時設定BusNname= 才行

notify:在啟動完成后會發送一個通知消息。還需要配合NotifyAccess 來讓Systemd 接收消息

idle:與simple類似,要執行這個daemon必須要所有的工作都順利執行完畢后才會執行。這類的daemon通常是開機到最后才執行即可的服務

EnvironmentFile:環境配置文件

  ExecStart:指明啟動unit要運行命令或腳本的絕對路徑

  ExecStartPre:ExecStart前運行

  ExecStartPost:ExecStart后運行

  ExecStop:指明停止unit要運行的命令或腳本

  Restart:當設定Restart=1 時,則當次daemon服務意外終止后,會再次自動啟動此服務

(3)Install段的常用選項:

Alias:別名,可使用systemctl command Alias.service

RequiredBy:被哪些units所依賴,強依賴

WantedBy:被哪些units所依賴,弱依賴

Also:安裝本服務的時候還要安裝別的相關服務

注意:對于新創建的unit文件,或者修改了的unit文件,要通知systemd重載此配置文件,而后可以選擇重啟

# systemctl daemon-reload

 

事例:vim /etc/systemd/system/bak.service

[Unit]

Description=backup my etc

Requires=atd.service

[Service]

Type=simple

ExecStart=/bin/bash -c "echo /testdir/bak.sh|at now"

[Install]

WantedBy=multi-user.target

#systemctl daemon-reload

#systemctl start bak

 

11、設置內核參數,只影響當次啟動

啟動時,在linux16行后添加systemd.unit=desired.target

systemd.unit=emergency.target

systemd.unit=recure.target

recure.target 比emergency 支持更多的功能,例如日志等

12、啟動排錯:

文件系統損壞:先嘗試自動修復,失敗則進入emergency shell,提示用戶修復

  在/etc/fstab不存在對應的設備和UUID,一段時間,如不可用,進入emergency shell

  在/etc/fstab不存在對應掛載點,systemd嘗試創建掛載點,否則提示進入emergency shell.

  在/etc/fstab不正確的掛載選項,提示進入emergency shell

13、破解root密碼:

  啟動時任意鍵暫停啟動

  按e鍵進入編輯模式

  將光標移動linux16開始的行,添加內核參數rd.break

  按ctrl-x啟動

  #mount –o remount,rw /sysroot

  #chroot /sysroot

  #passwd root

  #touch /.autorelabel

#exit

#exit

14、修改grub2:

   GRUB“the Grand Unified Bootloader”

引導提示時可以使用命令行界面

可從文件系統引導

 主要配置文件/boot/grub2/grub.cfg

 修復配置文件:grub2-mkconfig > /boot/grub2/grub.cfg(grub2-mkconfig -o /boot/grub2/grub.cfg)

 修復grub:grub2-install /dev/sda BIOS環境

grub2-install UEFI環境

 

習題:

1、 為編譯安裝的httpd服務,實現service unit文件

編譯安裝httpd:#./configure –prefix=/usr/local/httpd –sysconfdir=/etc/httpd

blob.png

編寫httpd的服務Unit:

blob.png

blob.png

2、破解centos7 口令

blob.png

在linux16該行的后面輸入rd.break完成后,使用Ctrl+x啟動系統

blob.png

下圖為進入破解的命令行操作界面:

blob.png

執行破解的步驟:

blob.png

注:需要等待一段時間,修改過后root的密碼,系統需要掃描整個磁盤的文件,將沒有安全標簽的文件給打上標簽。

3、修改默認的啟動內核

#vim /etc/default/grub

blob.png

4、啟動時臨時禁用SELinux

blob.png

blob.png

5、啟動時進入emergency模式

blob.png

blob.png

輸入root的密碼后得到下圖的界面:

blob.png

6、刪除編譯安裝的新內核

#rm -rf /boot/*.3.18.41*

#vim /boot/grub2/grub.cfg 刪除相應的kernel信息

#rm -rf /lib/modules/3.18.41*

#rm -rf /usr/src/linux-3.18.41 (一般建議在編譯安裝完成后,將相應的源碼文件刪除掉)

 

 

 

1、求每班總成績和平均成績

name class score

wang   1    100

zhang  2    90

li     1    80

 

方法一:

# awk '!/^name/{if($2==1){num1++;sum1+=$3}else{num2++;sum2+=$3}}END{print "class1",sum1,

sum1/num1,"\n""class2",sum2,sum2/num2}' score

blob.png

方法二:

# awk '!/^name/{class[$2]++;sum[$2]+=$3}END{for(i in class){print i,sum[i],sum[i]/class[i]}}' score

blob.png

原創文章,作者:Aaron_wang,如若轉載,請注明出處:http://www.www58058.com/48563

(1)
Aaron_wangAaron_wang
上一篇 2016-09-23
下一篇 2016-09-23

相關推薦

  • first

    計算機可分為硬件(CPU ,存儲器 ,輸入設備 ,輸出設備),軟件(操作系統 ) 兩大部份; CPU:Central Processing Unit 中央處理器 ,內部由運算器,控制器,寄存器,緩存器組成 ; 存儲器 :(RAM:Random Access Memory 隨機存儲器)進行數據 暫存,斷電后其內信息會丟失,如內存 ;(ROM:Read Only…

    Linux干貨 2016-12-05
  • hello 北京&Linux啟程

    北京初感&Linux啟程

    Linux干貨 2018-03-26
  • 第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主使用紅色顯示; 2、如何給網絡接口配置多個地址,有哪些方式? 方法3:在/etc/sysconfig/netw…

    2017-04-20
  • Nginx介紹及使用

       Nginx(engine x)是一個高性能的HTTP和反向代理服務器, 也是一個IMAP/POP3/SMTP服務器. Nginx是由IgorSysoev為俄羅斯訪問量第二的Rambler.ru站點開發的, 第一個公開版本在2004年發布. 因為它的穩定性, 豐富的功能集, 示例配置文件和低系統資源的消耗而聞名. Nginx是一款輕量…

    Linux干貨 2016-11-11
  • linux文本編輯器,vim編輯器

    定義:文本(純文本信息,必須是不加任何修飾的文本信息)編輯器 文本編輯器種類:                 行文本編輯器 :sed       &…

    Linux干貨 2016-08-10
  • 安裝centos7

    在vmware安裝centos7

    2018-03-26

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-26 12:17

    文章知識總結的很詳細,贊一個

欧美性久久久久