一、系统启动流程

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]
程序
执行的命令
启动
重载
停止

    

三十、CentOS 7之systemd的更多相关文章

  1. centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课

    centos shell编程5  LANMP一键安装脚本 lamp  sed  lnmp  变量和字符串比较不能用-eq  cat > /usr/local/apache2/htdocs/ind ...

  2. centos shell编程4【分发系统】 服务器标准化 mkpasswd 生成密码的工具 expect讲解 expect传递参数 expect自动同步文件 expect指定host和要同步的文件 expect文件分发系统 expect自动发送密钥脚本 Linux脚本执行方式 第三十八节课

    centos shell编程4[分发系统] 服务器标准化  mkpasswd 生成密码的工具  expect讲解   expect传递参数   expect自动同步文件  expect指定host和要 ...

  3. centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课

    centos  shell脚本编程2 if 判断  case判断   shell脚本中的循环  for   while   shell中的函数  break  continue  test 命令   ...

  4. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  5. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  6. centos DNS服务搭建 DNS原理 使用bind搭建DNS服务器 配置DNS转发 配置主从 安装dig工具 DHCP dhclient 各种域名解析记录 mydns DNS动态更新 第三十节课

    centos  DNS服务搭建  DNS原理  使用bind搭建DNS服务器 配置DNS转发 配置主从  安装dig工具  DHCP  dhclient  各种域名解析记录  mydns DNS动态更 ...

  7. CentOS 7 中 Systemd详解

    一.systemd的由来 Linux一直以来采用init进程但是init有两个缺点: 1.启动时间长.Init进程是串行启动,只有前一个进程启动完,才会启动下一个进程.(这也是CentOS5的主要特征 ...

  8. CentOS 7.4 初次手记:第三章 CentOS基础了解

    第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...

  9. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

随机推荐

  1. 14-MySQL DBA笔记-运维技巧和常见问题处理

    第14章 运维技巧和常见问题处理 DBA的成长,离不开对各种问题的处理.本章将为读者介绍一些运维技巧和常见问题的处理方法.我们需要意识到,别人的经验代替不了自己的经验,所以,多实践.多处理问题,最终会 ...

  2. SQL Server系统函数:类型转换函数

    原文:SQL Server系统函数:类型转换函数 1.基本的转化 SELECT CAST(2008 as varchar(4)) + ' year!' SELECT CONVERT(varchar(4 ...

  3. axios全局配置及拦截器

    axios使用说明文档 axios 全局配置: //axios-init.js import axios from 'axios': let loadingInstance; //创建Loading ...

  4. Spring的SSM标准配置

    一.首先是web.xml文件的配置 <welcome-file-list> <!--设置默认显示登陆界面--> <welcome-file>login.jsp< ...

  5. JDK1.8新特性(一) ----Lambda表达式、Stream API、函数式接口、方法引用

    jdk1.8新特性知识点: Lambda表达式 Stream API 函数式接口 方法引用和构造器调用 接口中的默认方法和静态方法 新时间日期API default   Lambda表达式     L ...

  6. es6中Array.from()

    Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组. 那么什么是类数组对象呢?所谓类数组对象,最基本的要求就是具有length属性的对象. 1.将类数组对象转换为真正数 ...

  7. 什么是领域模型(domain model)?贫血模型(anaemic domain model)和充血模型(rich domain model)有什么区别

    领域模型是领域内的概念类或现实世界中对象的可视化表示,又称为概念模型或分析对象模型,它专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系. 贫血模型是指使用的领域对象中只有s ...

  8. curl命令的用法

    curl 命令详解   命令事例 发送POST请求: 如果传输文件:curl -F "blob=@tmp.txt;type=text/plain" localhost:8080/r ...

  9. 前端笔记-css

    css(穿着) 1. 第一种<head><style></style></head>中可以写css样式 css选择器 定位到哪个标签的css id选择器 ...

  10. Vue-main.js中的一些配置

    import Vue from 'vue' import App from './App.vue' import router from './router' import store from '. ...