管理systemd

管理systemd

init(系統的第一個進程):

CentOS 5: SysV init
CentOS 6: Upstart
CentOS 7: Systemd

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

管理systemd

Systemd新特性:

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

  • 按需啟動守護進程

  • 系統狀態快照

  • 自動化的服務依賴關系管理(基于依賴關系定義服務控制邏輯)

核心概念:unit

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

配置文件:

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

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

  • /etc/systemd/system:管理員建立的執行腳本,類似于/etc/rc.d/rcN.d/Sxx類的功能,比上面目錄優先運行(建議以后存放自己寫的服務時放在這)

Unit類型

  • Systemctl –t help 查看unit類型

  • 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 目錄

關鍵特性:

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

  • 基于d-bus的激活機制:

  • 基于device的激活機制:

  • 基于path的激活機制:

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

  • 向后兼容sysv init腳本
     -放在/etc/init.d下的腳本一樣能靠systemd啟動

不兼容此前叫老的功能:

1. systemctl命令固定不變,不可擴展
2. 非由systemd啟動的服務,systemctl無法與之通信和控制



CentOS 7 管理服務

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.service

  • 條件式重啟:已啟動才重啟,否則不做操作
    service name condrestart ==systemctl tryrestart name.service

  • 重載或重啟服務:先加載,再啟動
    systemctl reload-or-restart name.service

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


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

  • 取消禁止
    systemctl unmask name.service
    管理systemd
    由此看出這里的屏蔽和非屏蔽只是把這個服務指向了一個空這樣就不能啟動了!


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

  • 查看所有已經激活的服務:
    systemctl list-units –type service

  • 查看所有服務:
    systemctl list-units –type service –all


chkconfig命令的對應關系:

  • 設定某服務開機自啟
    chkconfig name on ==systemctl enable name.service

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

  • 查看所有服務的開機自啟狀態:
    chkconfig –list ==> systemctl list-unit-files –type service

  • 查看服務是否能開機自啟:
    chkconfig –list NAME ==> systemctl is-enabled name.service

管理systemd

原理就是創建軟連接…….

其它命令:

  • 查看服務的依賴關系:

    systemctl list-dependencies name.service

  • 殺掉進程:

    systemctl kill 進程名

服務狀態

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

  • loaded:Unit配置文件已處理

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

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

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

  • inactive:不運行

  • enabled:開機啟動

  • disabled:開機不啟動

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

systemctl 命令實例

顯示所有單元狀態

systemctl

只顯示服務單元的狀態

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,使之不能自動啟動,但手動可以

systemclt disable network

啟用network

systemctl enable network

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

systemclt mask network

啟用network

systemctl umask network


運行級別

target units:

unit配置文件:.target

運行級別:


0 ==> runlevel0.target, poweroff.target
1 ==> runlevel1.target, rescue.target

2 ==runlevel2.target, multi-user.target
3 ==runlevel3.target, multi-user.target
4 ==runlevel4.target, multi-user.target


5 ==> runlevel5.target, graphical.target
6 ==> runlevel6.target, reboot.target

級別切換:

init N ==> systemctl isolate name.target

注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切換(修改文件需執行systemctl daemonreload才能生效)

查看target(查看級別):

runlevel
systemctl list-units –t  target
systemctl list-units –t  target  –all

獲取默認運行級別:

/etc/inittab ==> systemctl get-default

修改默認級別:

/etc/inittab ==> systemctl set-default name.target

管理systemd

切換至緊急救援模式(啟動級別 1):

systemctl rescue

切換至emergency模式(緊急模式 驅動不會被裝載):

systemctl emergency
用于裝載系統驅動導致的系統崩潰啟動。此模式下相當于6時 不運行 rc.d目錄下的服務的模式

其它常用命令:

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

關機:systemctl halt、systemctl poweroff
重啟:systemctl reboot
掛起:systemctl suspend
休眠:systemctl hibernate(快照)
休眠并掛起:systemctl hybrid-sleep(快照并掛起)


CentOS 7 引導順序

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

2、選擇啟動設備

3、引導裝載程序, centos7是grub2

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

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


5、 加載initramfs驅動模塊

6、 加載內核選項

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

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

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

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

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

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

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

14、 Systemd執行multi-user.target下的getty.target及登入服務

15、 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 file組成

[Unit]

定義與unit類型無關的通用選項;description:用于提供unit的描述信息;after:定義依賴關系

description:描述信息;意義性描述
After:定義unit的啟動次序;表示當前unit應晚于那些unit啟動;其功能與Before相反
Requite:依賴到的unit,被依賴的units無法激活時,當前unit無法激活;強依賴
Wants:定義依賴關系;依賴到的uint    
Conflicts:定義units間的沖突關系

[Service]

定義與特定類型相關的選項;此處為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服務意外終止后,會再次自動啟動此服務

[Install]

定義由‘systemctl enable’以及‘systemctl disable’命令在實現服務啟用或禁用時用到的一些選項

 Alias:別名,可使用systemctl command Alias.service
 RequiredBy:被哪些units所依賴,強依賴
 WantedBy:被哪些units所依賴,弱依賴
 Also:安裝本服務的時候還要安裝別的相關服務

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

# systemctl daemon-reload

服務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


設置內核參數

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

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

  • systemd.unit=emergency.target

  • systemd.unit=recure.target

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

啟動排錯

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

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

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

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


Centos 7破解root口令

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

  2. 按e鍵進入編輯模式

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

  4. 按ctrl-x啟動

  5. mount –o remount,rw /sysroot

  6. chroot /sysroot

  7. passwd root

  8. touch /.autorelabel
    管理systemd
    管理systemd
    管理systemd


修復GRUB2

開機啟動內核的選項;
/boot/grub2/grub.cfg

GRUB“the Grand Unified Bootloader”引導提示時可以使用命令行界面

可從文件系統引導

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

  • 修復配置文件
    grub2-mkconfig > /boot/grub2/grub.cfg

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

刪除已經編譯的內核

vim /boot/grub2/grub.cfg
找到 set default 使之 =“0”
刪除 menuentry 所在的那段
刪除boot下的 對應的img等文件
刪除 /usr/src/下對應的文件?。?/p>

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

(0)
qzxqzx
上一篇 2016-09-22 17:15
下一篇 2016-09-22 21:15

相關推薦

  • 軟件包管理

    軟件包管理 在linux中有人多的軟件使用,比如我們使用的ifconfig,fdisk,btrfs文件系統等。可能這些軟件在你原有的linux系統中并不存在,那么我們如何去使用這些工具呢。我們知道windows在需要軟件的時候需要安裝,當然對于linux系統一樣需要安裝。在linux下常用的安裝工具我們使用的是rpm程序包(當然我們這邊是針對CentOS而言…

    Linux干貨 2016-08-19
  • linux文件、目錄基本操作命令及bash特性介紹

    1、文件層級FHS介紹: Filesystem Hierarchy Standard(文件系統層次化標準)的縮寫,多數Linux版本采用這種文件組織形式,類似于Windows操作系統中c盤的文件目錄,FHS采用樹形結構組織文件。 FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。 /:linux文件系統根目錄 /…

    2017-09-17
  • Linux啟動流程

    Linux的啟動流程有以下部分組成,以下流程以CentOs 6.8為例 1、POST加電自檢,檢測各項硬件工作是否正常,BIOS選擇啟動設備。 2、根據設備的前446字節,加載bootloader程序 3、initramfs是1.5階段,intramfs文件是創建系統時生成的文件。intramfs是一個過渡階段,initramfs加載系統的一些設備驅動,比如…

    2017-05-15
  • 壓縮工具

     壓縮和解壓縮工具和bash腳本編程      壓縮比        目的:時間換空間        cpu的時間—>磁盤空間        compress/uncompress.…

    Linux干貨 2016-12-31
  • 硬鏈接和軟鏈接的說明

    1、硬鏈接和軟鏈接的區別    (1)、原理上:                   【1】 硬鏈接(hard link):                 &…

    2017-07-21
  • 高級文件系統管理1

    本部分內容主要講述了高級文件系統的管理,包括設定文件系統配額,設定和管理軟RAID設備,配置邏輯卷,設定LVM快照和btrfs文件系統。其中文件系統配額和軟RAID在企業中使用的頻率并不很高,作為熟練即可,而邏輯卷的創建和LVM快照是非常重要的內容,必須精通并完全理解其原理。至于btrfs文件系統是新興的一種技術,作為了解即可。 一、知識整理 1、文件系統配…

    Linux干貨 2016-08-29
欧美性久久久久