系统启动流程

	POST --> Boot Sequence --> Bootloader --> kernel+initramfs(initrd) --> rootfs --> /sbin/init
init:
CentOS 5: SysV init
CentOS 6: Upstart
CentOS 7: Systemd

systemd

	系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。
新特性:
系统引导时实现服务并行启动
按需启动守护进程
自动化的服务依赖关系管理
同时采用socket式与D-Bus总线式激活服务
系统状态快照
核心概念:unit
unit 表示不同类型的systemd对象,通过配置文件进行标识和配置。
文件中主要包含了系统服务、监听socket 、保存的系统快照以及其它与init 相关的信息。
配置文件:
/usr/lib/systemd/system:
每个服务最主要的启动脚本设置,类似于之前的/etc/init.d/
/run/systemd/system:
系统执行过程中所产生的服务脚本,比/usr/lib/systemd/system目录优先运行
/etc/systemd/system:
管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx 类的功能,比/run/systemd/system目录优先运行
关键特性:
基于socket 的激活机制: socket 与服务程序分离
基于d-bus 的激活机制:
基于device 的激活机制:
基于path 的激活机制:
系统快照: 保存各unit的当前状态信息于持久存储设备中,向后兼容sysv init 脚本
不兼容:
systemctl 命令固定不变,不可扩展
非由systemd 启动的服务,systemctl无法与之通信和控制

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 目录

服务管理

	centos7几乎一切服务都是由systemctl来管理service unit,centos7之前的service同时仍然兼容。
```
##运行级别
```
target units:
unit 配置文件:
.target,用于模拟实现运行级别
ls /usr/lib/systemd/system/*.target
systemctl list-unit-files --type target --all
运行级别:
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
查看依赖性:
systemctl list-dependencies graphical.target 级别切换:
init N ==> systemctl isolate name.target
systemctl isolate multi-user.target
注意:只有/lib/systemd/system/*.target 文件中AllowIsolate=yes才能切换,修改文件需执行systemctl daemon-reload 才能生效
查看target:
systemctl list-units --type target
获取默认运行级别:
/etc/inittab ==> systemctl get-default
runlevel
who -r
修改默认级别:
/etc/inittab ==> systemctl set-default name.target
systemctl set-default multi-user.target
ls –l /etc/systemd/system/default.target
切换至紧急救援模式:
相当于init 1
systemctl rescue
切换至emergency 模式:
systemctl emergency
其它常用命令:
传统命令init ,poweroff ,halt ,reboot 都成为 systemctl 的软链接
关机:systemctl halt 、systemctl poweroff
重启:systemctl reboot
挂起:systemctl suspend
休眠: :systemctl hibernate
休眠并挂起:systemctl hybrid-sleep
```
##CentOS7 引导启动顺序
```
UEFi 或BIOS 初始化,运行POST 开机自检
选择启动设备
引导装载程序, centos7 是grub2
加载装载程序的配置文件:/etc/grub.d/ ,/etc/default/grub ,/boot/grub2/grub.cfg
加载initramfs 驱动模块
加载内核选项
内核初始化,centos7 使用systemd 代替init
执行initrd.target 所有单元,包括挂载/etc/fstab
从initramfs 根文件系统切换到磁盘根目录
systemd执行/etc/systemd/system目录下的配置
systemd 执行默认target 配置,配置文件/etc/systemd/system/default.target
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 需要的服务
```
##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“ 命令在实现服务启用或禁用时用到的一些选项
Unit 段的常用选项:
Description : 描述信息
After : 定义unit 的启动次序,表示当前unit 应该晚于哪些unit 启动,其功能与Before 相反
Requires : 依赖到的其它units ,强依赖,被依赖的units 无法激活时,当前unit 也无法激活
Wants : 依赖到的其它units ,弱依赖
Conflicts : 定义units 间的冲突关系
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 段的常用选项:
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 /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
```
##破解CentOS7 的root 口令
```
方法一
启动时任意键暂停启动
按e 键进入编辑模式
将光标移动linux16 开始的行,添加内核参数rd.break
按ctrl-x 启动
mount –o remount,rw /sysroot
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot
方法二
启动时任意键暂停启动
按e 键进入编辑模式
将光标移动linux16 开始的行,改为rw init=/sysroot/bin/sh
按ctrl-x 启动
chroot /sysroot
passwd root
touch /.autorelabel
exit
reboot ```
##修复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 环境)
调整默认启动内核
vim /etc/default/grub
GRUB_DEFAULT=0
```

centos7的systemd的更多相关文章

  1. centos7的systemd命令对比

    centos7的systemd命令对比 http://www.linuxidc.com/Linux/2014-09/106490p2.htmhttp://www.linuxidc.com/Linux/ ...

  2. centos7上systemd详解

    centos7上systemd详解  发表于 2016-06-07 |  分类于 linux CentOS 7继承了RHEL 7的新的特性,例如强大的systemd, 而systemd的使用也使得以往 ...

  3. centos7 使用systemd 自定义关机前脚本

    systemd (centos7) 需求,关机前执行脚本 关机脚本vi /usr/bin/shutdown_cust.sh#!/bin/bashecho "zhengchangguanji& ...

  4. CentOs7下systemd管理知识要点

    centOs7的一个巨大的变动就是用systemd取代了原来的System V init.systemd是一个完整的软件包,安装完成后有很多物理文件组成,大致分布为,配置文件位于/etc/system ...

  5. Centos7之Systemd风格

    Unit(单元) /usr/lib/systemd/system       每个服务最主要的启动脚本设置,类似于之前的/etc/init.d目录 关键特性 1.基于socket的激活机制,socke ...

  6. CentOS7 通过systemd 添加开机重启服务

    现在越来越多的环境采用 CentOS 7 作为基础配置,特别是 Hadoop生态 如果要测试或部署环境需要启动很多组件(zookeeper.kafka.redis等等),如下内容是在操作系统层实现开机 ...

  7. Centos7.2 Systemd 方式编译 Mysql5.7.11

    导读 MySQL 5.7 版本的发布,也就是说从现在开始5.7已经可以在生产环境中使用,有任何问题官方都将立刻修复. MySQL 5.7主要特性: 原生支持Systemd 更好的性能:对于多核CPU. ...

  8. Centos7之Systemd(Service文件)详解

    一.开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件. 如果你想让该软件开机启动,就执行下面的命令(以httpd. ...

  9. centos7 系统管理systemd学习记录

    在centos7之前,系统服务是service,chkconfig等命令来管理的.到了centos7,统一使用systemctl来管理系统服务 其实就是把chkconfig和service结合在一起了 ...

随机推荐

  1. codeforces 407 div1 A题(Functions again)

    codeforces 407 div1 A题(Functions again) Something happened in Uzhlyandia again... There are riots on ...

  2. winfrom Panel 问题

    Panel 图片自适应 BackgroundImageLayout 设置成Zoom就行 Panel动态换图片时候的闪烁问题: 首先创建一个自己的panel类: using System; using ...

  3. keil mdk uvision使用技巧

    语法检测&代码提示 中文友好: tab 可以选中一大块代码,一起缩进 快速注释 先选中你要注释的代码区,然后右键,选择Advanced,Comment Selection 就可以了 查找替换 ...

  4. BNUOJ 26229 Red/Blue Spanning Tree

    Red/Blue Spanning Tree Time Limit: 2000ms Memory Limit: 131072KB This problem will be judged on HDU. ...

  5. 讨论几种数据列Column的特性(上)

    之前笔者写过一个系列<索引列的usable和visible>(http://space.itpub.net/17203031/viewspace-688135),详细讨论了索引列的usab ...

  6. [Wf2015]Tours

    [Wf2015]Tours 题目 给定一张n个点m条边的无向图,你需要选择一个颜色种类数k,然后用这k种颜色给每条边染色,要求对于图中任意一个简单环,每种颜色的边的数量都相同,求所有可行的k INPU ...

  7. 前端开发:JQuery(2)& Bootstrap

    JS事件流 事件的概念:HTML中与javascript交互是通过事件驱动来实现的,例如鼠标点击事件.页面的滚动事件onscroll等等,可以向文档或者文档中的元素添加事件侦听器来预订事件. 事件流: ...

  8. 2018/3/4 Activiti教程之流程部署篇(与Springboot整合版)二

    首先我们来看下Activiti为我们自动生成的这四张用户相关的表 先看下USER表 我已经插入了一些数据,很明显,就是保存用户的信息的 看下GROUP 用户对应的分组信息 MEMBERSHIP 用户和 ...

  9. CODEVS——T 3736 【HR】万花丛中2

    http://codevs.cn/problem/3736/  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description ...

  10. html5 编辑

    在html中想获得矢量图形可以用svg标签.该标签画出的图形全部用代码实现. 可以用在线html编辑工具来进行所见即所得编辑,然后到处源码. 比较好用的工具有http://editor.method. ...