管理systemd

管理systemd

一、systemd介紹

回顧一下centos的啟動流程

 POST –> Boot Sequence –> Bootloader –> kernel +

initramfs(initrd) –> rootfs –> /sbin/init

centos7中系統啟動的第一個意義上的進程就是init,只不過在centos7上變成了Systemd這個守護進程

 Systemd :系統啟動和服務器守護進程管理器,負責在系統

啟動或運行時,激活系統資源,服務器進程和其它進程

配置文件:

/usr/lib/systemd/system:每個服務最主要的啟動腳本

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

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

二、類型

  Systemctl –t help  查看unit 類型

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

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

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

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

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

特性:

關鍵特性:

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

基于d-bus 的激活機制:

基于device 的激活機制:

基于path 的激活機制:

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

向后兼容sysv init 腳本

  不兼容:

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

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

三、管理服務

  管理系統服務:

CentOS 7: service unit

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

  命令:systemctl COMMAND name.service

  啟動:service name start ==> systemctl start

name.service

  停止:service name stop ==> systemctl stop

name.service

  重啟:service name restart ==> systemctl restart

name.service

  狀態:service name status ==> systemctl status

name.servic

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

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

  取消禁止:

systemctl unmask name.service

四、centos7的引導順序

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

2)選擇啟動設備

  (3) 引導裝載程序, centos7 是grub2

  (4) 加載裝載程序的配置文件:/etc/grub.d/

5)/etc/default/grub /boot/grub2/grub.cfg

  (6)加載initramfs 驅動模塊

  (7)加載內核選項

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

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

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

 11)systemd 執行默認target 配置,配置文件

/etc/systemd/default.target /etc/systemd/system/

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

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

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

 (15)Systemd 執行multi-user.target 下的getty.target 及登入服務

 (16) systemd 執行graphical

五、service unit文件

/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“ 命令在實現服務啟用或禁用時用到的一些選項

service unit 文件格式

 Unit 段的常用選項:

 Description :描述信息

 After :定義unit 的啟動次序,表示當前unit 應該晚于哪些

unit 啟動,其功能與Before 相反

 Requires :依賴到的其它units ,強依賴,被依賴的units 無法

激活時,當前unit 即無法激活

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

 Conflicts :定義units

 EnvironmentFile :環境配置文件

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

 ExecStartPre: : ExecStart 前運行

 ExecStartPost: : ExecStart 后運行

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

 Restart :當設定Restart=1  時,則當次daemon 服務意外終

止后,會再次自動啟動此服務。

服務Unit 文件示例:

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

作業

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

添加了service unit之后

服務器沒有啟動,出現了如下的報錯

 圖片1.png

解決辦法:

 

1)可以設定httpd.conf文件中的 ServerName,如下:ServerName localhost:80                        

 

(2) /etc/hosts 中填入自己的主機名稱,如下:127.0.0.1 localhost  (用戶名稱)

systemctl  daemon-reload

vsystemctl  start  http

2、破解centos7 口令

答:

  1) 啟動時任意鍵暫停啟動

v(2)按 按e 鍵進入編輯模式

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

v(4)按 按ctrl-x 啟動

v(5) mount –o remount,rw /sysroot

v(6)chroot /sysroot

v(7) passwd root

v(8)touch /.autorelabel

3、修改默認的啟動內核

答:1)vim /etc/default/grub

修改GRUB_DEFAULT=saved—-》GRUB_DEFAULT=0

   2)grub2-mkconfig -o /boot/grub2/grub.cfg

4、啟動時臨時禁用SELinux

 

5、啟動時進入emergency模式

   啟動時任意鍵暫停啟動,按e 鍵進入編輯模式;將光標移動linux16 開始的行,添加內核參數systemd.unit=rescue.target 是一個設置基本系統和救援 shell 的特殊 target unit (與運行級1相似);systemd.unit=emergency.target 與傳遞保留參數的 init=/bin/sh 給系統使系統從該狀態啟動相似。

 

 

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

(0)
178babyhanggege178babyhanggege
上一篇 2016-09-22 15:54
下一篇 2016-09-22 17:15

相關推薦

  • http

    http http:hyper text transfer protocol, 應用層協議, 80/tcp, 文本協議 html:hyper text mark language, 是一種編程語言,超文本標記語言; html格式示例: <html> <head> <title>TITLE</title> &lt…

    Linux干貨 2017-06-04
  • iptables之froward

    先克隆一臺centos服務器添加虛擬網卡 同時兩個服務器配上host only的網卡 echo 1 > /proc/sys/net/ipv4/ip_forward打開網卡間轉發 有回包 但是沒有10.0.0.3還是沒有ping通原因是192.168.68.134 的網關指向了192.168.68.2 而不是192.168.68.144添加一條指向192…

    2017-11-12
  • test1

    test 

    Linux干貨 2016-09-15
  • MHA

    1.關于MHA MHA是一款開源的mysql的高可用程序,它為mysql主從復制架構提供了automating master failover功能。MHA在監控到master節點故障時,會提升其中擁有最新數據的slave節點成為新的master節點,在此期間,MHA會通過與其他從節點獲取額外的信息來避免不一致性的問題。MHA還提供了master節點的在線切換…

    2016-11-26
  • 網絡這塊一些有趣的感想

    還記的那天老師讓我們做兩臺主機的nexthop就是自己的ip地址,然后互相ping測試能否互相聯通的實驗,昨晚之后我就在想能不能進行一些改進,因為在我看來這種級別的互相ping的前面一個網絡段相同太沒意思了。 接著我就嘗試了幾種IP地址 主機A 主機B 192.0.0.1 192.1.0.1 192.1.1.1 192.2.2.2 192.2.1.1 192…

    Linux干貨 2016-09-13
欧美性久久久久