一、系统启动流程

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. NavigatorOnLine.onLine——判断设备是否可以上网

    概述:返回浏览器的联网状态.正常联网(在线)返回true,不正常联网(离线)返回false.一旦浏览器的联网状态发生改变,该属性值也会随之变化. 1.语法 let online = window.na ...

  2. (八)装配Bean(2)

    二.在Java类中进行显式的装配 显式配置有两种: 1. 一种是在java(本文讲解)   2. 另一种是xml配置文件(第一章有讲) 案例一: 使用java显式装配+@autowired自动装配的方 ...

  3. (一)SpringBoot之简介和安装插件以及HelloWorld第一个程序

    一.简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的 ...

  4. ASP.NET全局编码和语言

    // /*--------------- // //  使用地方:ASP.NET 项目 // //   // // 文件名: // // 文件功能描述:可控制整个项目的一个统一编码格式和语言文字显示 ...

  5. 微信小程序wx:key以及wx:key=" *this"详解:

    今天写微信小程序无意中看到控制台给出了这样一行提示: 求解百度才知道,给大家分享一下: 1.wx:for定义 官方文档:在组件上使用 wx:for 控制属性绑定一个数组,即可使用数组中各项的数据重复渲 ...

  6. 【原创】大叔经验分享(94)jdbc连接mysql、sqlserver、oracle

    Mysql driver下载:https://mvnrepository.com/artifact/mysql/mysql-connector-java import java.sql.*; publ ...

  7. leetcode-104.二叉树最大深度 · BTree + 递归

    easy 题就不详细叙述题面和样例了,见谅. 题面 统计二叉树的最大深度. 算法 递归搜索二叉树,返回左右子树的最大深度. 源码 class Solution { public: int maxDep ...

  8. 单元测试自动生成工具evosuite

    github地址:https://github.com/EvoSuite/evosuite 官网地址:http://www.evosuite.org   快速开始: 1.  junit  <de ...

  9. MySQL数据库用户和权限管理

    一.视图 视图:VIEW,虚表,保存有实表的查询结果,在视图插入的内容都会存入表中.创建方法: CREATE VIEW view_name [(column_list)] AS select_st ...

  10. jquery.js:9600 POST http://127.0.0.1:8000/news/1/comments/ 500 (Internal Server Error)

    什么情况? 代码报错了....查询 语句错误  看 编译提示. 数据 查询 语句的问题!!!!