一、系统启动流程

POST --> bootloader  --> MBR工作 --> kernel(initramfs/initrd) --> ro rootfs --> init

二、init

用户空间的一切与管理相关的事务由Init程序完成,特权操作发起syscall由内核完成

2.1、init分类

  1)、CentOS 5 :SysV   /sbin/init 

        大量进程切换

        进程的依赖关系

  2)、CentOS 6:Upstart   命令名:init

      dbus机制,进程间通信,取消依赖

  3)、CentOS 7 :Systemd 

2.2、Systemd新特性:

  * 系统引导时,并行启动进程,类似于upstart

  * 按需激活进程: 节约内存,启动速度快

  * 支持系统快照

  * 基于依赖控制服务启动逻辑

三、系统管理的核心概念: systemd unit

3.1、配置文件进行标识和配置:文件中主要包含了系统服务、监听socket、保存的系统快照snapshot服务程序、以及其它与init相关的信息

  配置文件

    /usr/lib/systemd/system(重要文件)

    /run/system/system

    /etc/systemd/system (重要文件)

    注:不需要执行权限,仅为配置文件而已

3.2、Uint的类型:

    Service unit :文件扩展名为.service , 用于定义系统服务(管理服务)       

        /etc/systemd/system/httpd.service

        /usr/lib/systemd/system

        每一个脚本控制一个服务,每个脚本对应一个service 的unit

    Target unit :文件扩展名为.target ,用于模拟实现“运行级别”

3.2、Unit关键特性(按需激活)

  基于socket的激活机制:系统启动用不到的服务,由socketunit代为监听,在被访问时临时启动服务。

  基于bus的激活机制:支持dbus进程间通信的程序,可以按需激活

  基于device激活机制:在某个硬件设备激活或变得可用时的激活机制

  基于path激活机制:某个文件路径变得可用或激活时,激活相关服务

  基于快照激活机制:保存各unit的当前状态信息于持久存储设备中,必要时能够自动载入

  向后兼容SysV init脚本:兼容有限,支持有限个运行级别

3.3、不兼容

  * 没有脚本灵活,systemctl命令格式固定

  * 非由systemd服务启动的服务,systemd无法与之通信即systemd服务不能控制

  * systemd级别切换时,只有将运行中的服务才会停止,停止中的服务才会启动。   

   SysV脚本init切换运行级别时,例如3-->
   将/etc/rc.d/rc./*下的所有服务程序
   K* stop
   S* start

  * systemctl不会读取标准输入数据流

  * 跟用户的PATH环境没有关系(即使用绝对路径)

  * unit均受5min超时时长,时间一过,将会退出

四、CentOS 7 systemd管理系统服务

4.1、基本管理

    条件式重启:服务启动才重启,没启动就不作任何操作

 

4.2、服务状态注解

4.3、查看服务启动或停止、依赖关系、查看运行级别

systemctl list-units --type TYPE [--all]

查看所有服务的状态
  systemctl list-units --type service --all
查看所有运行(激活)状态的服务
  systemctl list-units --type service 查看单个服务是否处于运行状态
  systemctl is-active name.service 显示服务的依赖关系
  systemctl list-dependencies name.service

a)、服务状态注解

 

b)、查看开机是否自动启动

查看所有服务开机是否自动启动
   systemctl list-unit-files --type service 查看单个服务开机是否开机自动启动 (记住)

    systemctl is-enabled name.service

c)、设定服务开机是否自启

d)、运行级别管理

name.target :

 .target后缀配置文件:模拟某一级别所需要依赖的服务定义在一起能够同时启动
 
注:对centos7来说:2、3、4级别都一样

e)、级别管理

级别切换

centos 6              centos 7 

  init N ===》 systemctl isolate name.target

查看运行级别
  systemctl list-units --type target
  systemctl list-units --type target -all

获取默认运行级别:

  /etc/inittab ==》 systemctl get-default

修改默认级别:

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

注:设定默认运行级别靠的是/etc/systemd/system/default.target
设定图形:
删除/etc/systemd/system/default.target
ln -s /usr/lib/systemd/system/graphical.target /etc/systemd/system/default.target
设定字符:
删除/etc/systemd/system/default.target
ln -s /usr/lib/systemd/system/multi-user.target /etc/systemd/system/default.target

f)、切换至紧急救援模式:

  systemctl  rescue | emergency

      resuce :服务没有启动,驱动加载(renlevel1.target/rescue.target)==》init 1

      emergency:服务没有启动,驱动没有加载,没有初始化==》 启动过程中向内核传递emergency参数即可

g)、其它常用命令

关机 : systemctl halt | poweroff

重启: systemctl  reboot

挂起:systemctl  suspend (存储系统状态与内存中,关机数据会丢失)

保存快照:systemctl hibernate (系统重启后,不用操作自动操作)

快照并挂起: systemctl hybrid-sleep

重置错误状态的unit:

    systemctl  reset-failed  name.service

kill指明的unit

    systemctl  kill  name.TYPE

查看服务是否处于错误状态

    systemctl  is-failed  name.service

显示服务的属性信息

    systemctl  show  name.service

h)、unit配置文件

[Unit]
Description=描述信息
After=定义依赖关系

[Service]
程序
执行的命令
启动
重载
停止

    

最新文章

  1. 自动化小应用系列----利用selenium启动多个独立的浏览器
  2. TextView,EditText中添加不同颜色的文字
  3. python_way day12 sqlalchemy,原生mysql命令
  4. ARM处理器模式
  5. 在前端一定要了解的HTML,CSS知识
  6. SpringBoot实践 - SpringBoot+MySql+Redis
  7. C#利用substring按指定长度分割字符串
  8. 20190325-HTML框架、audio标签、vedio标签、source标签、HTML表单
  9. Pandas 基础(15) - date_range 和 asfreq
  10. STM32外设地址查询
  11. bzoj4504 K个串 (优先队列+主席树)
  12. JDBC使用步骤分哪几步?
  13. JS--我发现,原来你是这样的JS(引用类型不简单[上篇],且听我娓娓道来)
  14. Android -- taskAffinity
  15. Python爬虫下载Bilibili番剧弹幕
  16. 我的Android学习路线(一)
  17. SimpleITK学习(二)图像读取
  18. 从word中导出图片
  19. cocos2d-x 学习笔记之 CCMenuItemToggle用法
  20. java入门了解03

热门文章

  1. 北京大学1001ACM——高精度类型题总结
  2. pyodbc报错pyodbc.InterfaceError
  3. luogu题解 P3950部落冲突--树链剖分
  4. AI 公司与比赛
  5. 解决wpscan无法更新
  6. nc 命令
  7. Image Processing and Analysis_15_Image Registration:A survey of medical image registration——1998
  8. ImportError: No module named yaml
  9. 牛客练习赛48 A· 小w的a+b问题 (贪心,构造,二进制)
  10. 单播、广播和多播IP地址