一、系统启动流程

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. poj 3253 哈夫曼贪心

    http://poj.org/problem?id=3253 题意: FJ需要修补牧场的围栏,他需要 N 块长度为 Li 的木头(N planks of woods).开始时,FJ只有一块无限长的木板 ...

  2. 如何对SAP Leonardo上的机器学习模型进行重新训练

    Jerry之前的两篇文章介绍了如何通过Restful API的方式,消费SAP Leonardo上预先训练好的机器学习模型: 如何在Web应用里消费SAP Leonardo的机器学习API 部署在SA ...

  3. 2.TCP/IP的三次握手与四次挥手

    参考文章:http://357742954.blog.51cto.com/368705/1317226 TCP(Transmission Control Protocol) 传输控制协议,是一个面向连 ...

  4. UMI.js开发知识总结

    五分钟掌握最小知识体系 本文阅读时间大概为5分钟,但是能让你了解基于UMI和DVA构建项目的最小知识体系,你可以粗略的浏览一下本文所提到的知识,在后续的讲解中都会多次重复提起,保证学习效率.由于现在前 ...

  5. linux centos Supervisor守护.netcore进程安装配置

    场景:当部署完.netcore程序后 使用dotnet xx.dll 后可以运行,但关闭shell或隔断时间会自动断开,此时部署的.netcore程序就不能访问了,此时需要用到Supervisor了 ...

  6. Link monitoring

    参考:https://www.ibm.com/support/knowledgecenter/en/linuxonibm/com.ibm.linux.z.l0wlcb00/l0wlcb00_miimo ...

  7. centos7下postgresql数据库安装及配置

    1.安装 #yum install -y postgresql-server 2.postgresql数据库初始化 #service postgresql initdb 3.启动postgresql服 ...

  8. Tomcat 项目结构完整解析

    本文主要为了对我们平时Tomcat中,我们经常会涉及到的项目结构做一个解析,以便可以一目了然的知道有哪些结构及其作用. 最近一直在思考,怎么样才能一目了然,初步考虑,即用浏览器打开页面,不用往下滑动, ...

  9. Windows10官方正版系统的安装、激活、升级、U盘制作,无毒无害无捆绑无风险教程

    一般电脑系统出了其他问题或电脑用久太卡了,可以选择此类方法解决系统卡顿问题,重置电脑系统或也可以恢复出厂设置 如果出现重置找不到恢复环境问题 可以通过下载系统镜像来解决,进入 MSDN 网站下载所需系 ...

  10. 2.webpack最基本的使用方式

    什么是webpack? webpack是前端的一个项目构建工具,它是基于Node.js开发出来的一个前端工具: webpack安装的两种方式 1.运行 'npm i webpack -g' 全局安装w ...