一、系统启动流程

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. Swiper 轮播插件 之 动态加载无法滑动

    1.原因:轮播图未完全动态加载完成,即初始化 2.方法一:ajax链式编程 $.ajax({ type: "get", url: serviceURL + "/listB ...

  2. C#的@标志的使用情况—本篇blog采用Markdown编写

    @(C# 参考--出自官方文档入口) 1.使 C# 关键字用作标识符. @ 字符可作为代码元素的前缀,编译器将把此代码元素解释为标识符而非 C# 关键字. 下面的示例使用 @ 字符定义其在 for 循 ...

  3. VBA决策(十)

    决策允许程序员控制脚本或其中一个部分的执行流程.执行由一个或多个条件语句控制.以下是在大多数编程语言中找到的典型决策结构的一般形式. VBA提供了以下类型的决策声明. 点击以下链接来查看它们的详细信息 ...

  4. fiddle--APP弱网测试

    一.安装Fiddler 网上说要先安装.NET Framwork4,应该是由于本机已装,所以在安装Fiddler时并没有相关提示. Fiddler安装包:https://www.telerik.com ...

  5. 更优雅地关闭资源 - try-with-resource及其异常抑制--转载

    原文地址:https://www.cnblogs.com/itZhy/p/7636615.html 一.背景 我们知道,在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必 ...

  6. Postman --> YApi

    初始 Postman,才知其如此强大,慢慢接触学习吧~ “Modern software is built on APIs,Postman helps you develop APIs faster” ...

  7. Nginx,Haproxy/lvs负载均衡的优缺点分析

    PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下. 一般对负载均衡的使用是随着网站规模的提升根据不 ...

  8. 索引 _id

    _id索引是绝大多数集合默认建立的索引,对于每个插入的数据,mongodb都会自动生成一条唯一的_id字段 增加一个数据 > db.test2.insert({x:1}) WriteResult ...

  9. zencart用sql语句设置默认语言

    有时候拷贝站的时候,由于语言文件的缺失,导致页面空白,需要将默认语言更改为英语,以下sql语句可以一定搞定: UPDATE `configuration` SET `configuration_val ...

  10. IdentityServer(三)密码模式

    前言 用户名密码模式相较于客户端凭证模式,多了用户.通过用户的用户名和密码向Identity Server申请访问令牌.密码模式有两种实现方式. 1.把用户写进内存Identity从中读取账号密码验证 ...