#25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用

简介:

  systemd的新特性:

    1.在系统引导的时候可以实现服务的并行启动;

    2.能够实现按需激活进程;

      在系统启动时,需要随系统启动服务,其服务进程并没有启动,但是systemd为每一个此类服务进程都注册了对应的套接字;我们称这种服务处理方式为“半激活状态”;

    3.能够对当前系统的用户空间的每个进程状态快照;以后如果进程出现问题或故障,可以迅速恢复进程状态至过去的某一时刻;

    4.systemd内部有一种基于依赖关系来定义的服务控制逻辑;


  核心管理概念;unit文件

    由systemd相关的配置文件进行标识、识别和配置功能的实现的基础;

    unit的文件分类:

      系统服务类

      socket

      目标类

      快照类

      ...


    这些配置文件主要保存在:

      /usr/lib/systemd/system/*

      /etc/systemd/system/*         符号链接(如果自己写入添加配置文件,可以直接放在该目录,不用创建符号链接)

      /run/systemdsystem/*          非配置关键项;


    unit文件的常见类型:

      service unit:文件的扩展名为.service,用于定义系统服务,一般可以.service扩展名可以省略;


      target unit:文件的扩展名为.target,用于模拟实现“init程序的运行级别”;


      device unit:文件的扩展名为.device,用于定义内核识别出来的各设备;


      mount unit:文件的扩展名为.mount,用于定义可以被systemd管理的文件系统的挂载点;


      automount unit:文件的扩展名为.automount,用于定义文件系统的自动挂载点的位置;


      socket unit:文件的扩展名为.socket,用于标识进程间通信所用到的socket文件;


      swap unit:文件的扩展名为.swap,用于标识swap设备;


      path unit:文件的扩展名为.path,用于监控指定目录中的一个文件或一个子目录;如果被监控的文件或目录不存在;则systemd可以自动创建之;


  systemd特性的实现方式:

    1.基于socket unit的方式实现进程激活机制;

    2.基于device unit的方式实现设备的自动识别,挂载;

    3.基于bus的激活机制;

    4.基于path的激活机制;


  systemd的兼容和不兼容;

    兼容:sys V init的脚本;

    不兼容:必须使用systemctl命令来管理系统,systemctl命令的格式是固定不变的;所有不经由systemd启动的系统服务或系统功能,systemctl命令无法与之直接通信,也就意味着此类服务或功能,无法通过systemctl来控制;


  systemctl命令:

    systemctl - Control the systemd system and service manager

    systemctl [OPTIONS...] COMMAND [NAME...]


    管理服务类操作:

      启动:service name start ==> systemctl start name[.service]

      停止:service name stop ==> systemctl stop name[.service]

      重启:service name restart ==> systemctl restart name[.service]

      状态:service name status ==> systemctl status name[.service]

      设置服务的开机自启:chkconfig --level runlevels name on ==> systemctl enable name.service

      禁止服务的开启自启:chkconfig --level runlevels name off ==> systemctl disable name.service

      查看某服务是否开机自启:chkconfig --list name ==> systemctl is-enabled name.service

      条件是重启:service name condrestart ==> systemctl try-restart name.service

      重载配置文件:service name reload ==> systemctl reload name.service


      重载或重启:systemctl reload-or-restart name.service

      重载或条件式重启:systemctl reload-or-try-restart name.service


      查看某服务当前是否处于激活状态:systemctl is-active name.service

      查看所有已处于激活状态的服务:systemctl list-units

        --type=unit_type:查看指定unit类型的处于活跃状态的服务;

        --all:显示所有,包括处于活跃状态和处于非活跃状态的各服务;

      查看依赖指定服务的其他服务:systemctl list-dependencies name.service


      禁止某服务被设定为开机自启:systemctl mask name.service

      取消禁止某服务被设定为开机自启:systemctl unmask name.service


    管理target unit:

      模拟运行就别:

        0 ==> runlevel0,target,poweroff.target

        1 ==> runlevel1,target,rescue.target

        2 ==> runlevel2,target,multi-user.target

        3 ==> runlevel3,target,multi-user.target

        4 ==> runlevel4,target,multi-user.target

        5 ==> runlevel5,target,graphical,target

        6 ==> runlevel6,target,shutdown.target


      运行级别间切换:init # ==> systemctl isolate name.target

        注意:不是所有的target都能使用上述命令进行级别切换的;只有那些在对应的unit文件中包含了 allowisolate=yes的语法的target才能用于切换;


        修改了unit文件之后,需要通过命令才能使之生效;

        # systemctl daemon-reload


      查看运行级别:runlevel ==> systemctl list-units --type=target --all


      查看默认运行级别:/etc/inittab(id:3:initdefault:) ==> systemctl get-default

      修改默认运行级别:/etc/inittab(id:3:initdefault:) ==> systemctl set-default name.target


      rescue.target:紧急救援模式

        systemctl isolate rescue.target

        systemctl rescue


      emergency.target:紧急调试模式

        systemctl emergency


      rescue模式,相当于安全模式,在切换到此模式时,操作系统会运行最底层的驱动程序,以保证服务器可以运行起来;


      emergency模式,一般来说,通常是硬件故障,或者硬件不可识别,或硬件可识别但不可用等关乎于计算机硬件设施的问题,通常系统会启动emergency模式;


    除上述模式之外,传统的init命令,shutdown命令,poweroff命令,halt命令,reboot命令其实都是systemctl的符号链接;


    可以使用systemctl命令来直接实现上述功能;

      关机:systemctl halt ,systemctl poweroff

      重启:systemctl reboot

      挂起:systemctl suspend

      休眠(进程快照):systemctl hibernate

      挂起并休眠:systemctl hybrid-sleep


  service unit file的基本文件格式:

    /etc/systemd/system:存放到都是各个unit file的符号链接;

    /usr/lib/systemd/system


    如果自行编写unit file,可以直接将文件放置于/etc/systemd/system目录中,但是需要为其提供一个符号链接文件放置于/etc/systemd/system目录中;


    service unit file文件的基本格式;

      此类unit file通常分为三段;

        [unit]:定义与unit类型无关的通用选项;用于提供当前unit的描述信息,unit的依赖关系,unit相关帮助文档信息等;

          常用的选项语句:

            Description:定义相关服务的描述信息;意义性的介绍性的描述;

            After:定义了此服务在启动前必须依赖的其他服务内容;

            Before:定义了依赖此服务启动的其他服务;

            Wants:指明依赖关系,说明该服务依赖于哪些其他的unit;弱依赖,即使被依赖的服务并没有被正确激活,也不会影响但前服务是否可以被激活;

            Requires:指明依赖关系,说明该服务依赖于哪些其他的unit;强依赖,只要被依赖的unit无法被正确激活,则当前服务一定无法激活;

            Conflict:定义了各unit之间可能存在冲突;

            Documentation:定义了跟当前unit相关的管理命令的文档所在;


        [service]:定义与系统服务相关的专用的选项语句;

          常用的选项语句:

            Type:用于定义影响execstart即相关参数的功能的unit进程

              simple:默认值,表示由execstart语句指明的应用程序启动的进程就是主进程;

              forKing:复制自身,表示有exepstart语句指明的应用程序所启动的进程中众多的子进程中一个将称为主进程,而一旦启动完成,父进程会退出;

              oneshot:一次性进程,功能类似于simple,在启动后续的unit之前,主进程会退出;

              notify:功能类似于simple,但是其后续的unit仅在通过sd_notify()函数发送通知之后,才能运行execstart所指明的应用进程;

            Environmentfile:环境配置文件,此文件一般用于在execstart之前被读取,并为execstart执行后面的应用程序提供必要的变量以及其他自定义功能等;

            execstart:指明启动此服务所需要运行的命令或脚本;

            execreload:指明重载配置文件所需要运行的命令或脚本;

            execstop:指明停止服务所需要运行或脚本;

            execstartpre:指明在执行execstart指明的命令之前需要运行的命令或脚本;

            execstartpst:指明在执行execstart指明的命令之后需要运行的命令或脚本;

            restart:表示如果服务遭遇有意外而终止,则会自动重启该服务;



        [install]:定义由“systemctl enable”和“systemctl disable”命令在实现服务启动或禁用时用到的专用选项语句:

          wantedby:弱依赖关系,指的是该服务被哪些其他units所依赖;

          requiredby:强依赖关系,指的是该服务被哪些其他unit所依赖;


centos 7系统引导过程:

  1.post

  2.选择启动设备,读取引导程序

  3.装载引导程序(centos 7使用的grub2)

  4.装载引导程序的配置文件:/etc/grub.d/,/etc/default/grub,/boot/grub2/grub.cfg

  5.加载initramfs驱动模块

  6.加载内核

  7.内核以只读方式挂载(临时的根目录)rootfs,启动systemd进程;

  8.执行initrd-*.target所有的unit,包括挂载/etc/fstab文件中所有有效的文件系统;

  9.根切换

  10.systemd执行默认的target;



本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1952155
相关文章
|
6月前
|
传感器 人工智能 物联网
HarmonyOS NEXT~鸿蒙操作系统功耗优化特性深度解析
本文深入解析了华为鸿蒙(HarmonyOS)操作系统的功耗优化特性,涵盖低功耗设计原理、核心技术及实际应用效果。通过与Android对比,展现其在待机功耗、CPU调度效率和内存占用上的优势。文章重点阐述分布式任务调度、微内核架构及智能感知技术,并针对智能穿戴、物联网和智能手机等场景优化进行分析,同时为开发者提供优化建议。未来,鸿蒙将探索AI预测性管理等新技术,进一步提升能效表现。
1639 30
|
4月前
|
安全 Linux Shell
使用SCP命令在CentOS 7上向目标服务器传输文件
以上步骤是在CentOS 7系统上使用SCP命令进行文件传输的基础,操作简洁,易于理解。务必在执行命令前确认好各项参数,尤其是目录路径和文件名,以避免不必要的传输错误。
509 17
|
10月前
|
机器学习/深度学习 人工智能 云计算
Intel 平台新特性助力龙蜥 OS 云计算 | 龙蜥大讲堂101期
本次分享的主题是Intel平台新特性助力龙蜥OS云计算。内容涵盖英特尔第四代和第五代至强处理器的新特性,如性能提升、内置加速器等,并详细介绍TDX、SGX、AMX等技术原理及其在虚拟化环境中的支持情况,旨在帮助云用户充分利用英特尔新平台的优势。
264 5
|
6月前
|
Ubuntu 安全 Linux
CentOS与Ubuntu中防火墙配置命令集汇
有了这些,你就能遨游在 CentOS 和 Ubuntu 的海洋中,频繁地改变你的防火墙设置,快速地应对各种安全威胁,同时也能保证你的系统可以正常工作。出发吧,勇敢的编程者,随着这些命令集的涌动,扬帆起航,走向安全的网络世界!
220 5
|
8月前
|
弹性计算 人工智能 运维
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
阿里云操作系统控制台提供了便捷的服务器监控与管理功能,简化了运维工作。通过将多台服务器纳入统一监控平台,用户可以快速查看CPU、内存、磁盘和网络等关键资源的使用情况,避免了逐一远程连接查询的繁琐操作。此外,该工具支持自动化数据汇总,极大地方便了日报、周报和月报的编写。测试过程中,系统展示了良好的稳定性和响应速度,尤其在网络抖动和大文件健康状态测试中表现出色。整体体验流畅,显著提升了运维效率。 操作系统控制台地址:[点击访问](https://alinux.console.aliyun.com/)
305 26
摆脱繁琐命令-让运维更加流畅-阿里云ECS操作系统控制台运维篇
|
5月前
|
Oracle 关系型数据库 Linux
MyEMS开源系统安装之CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux
本指南介绍如何在CentOS/RHEL/Rocky/AlmaLinux/Oracle Linux服务器上部署MyEMS开源能源管理系统。内容涵盖系统准备、数据库配置、多个MyEMS服务(如myems-api、myems-admin、myems-modbus-tcp等)的安装与配置,以及Nginx服务器设置和防火墙规则调整。通过完成所有步骤,您将能够访问MyEMS Admin UI和Web UI,默认端口分别为8001和80,初始登录凭据已提供。
296 0
|
9月前
|
缓存 Ubuntu Linux
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
通过本文,我们详细了解了 `yum`、`rpm`、`apt-get`和 `wget`的区别、常用命令以及在CentOS和Ubuntu中安装 `wget`的方法。`yum`和 `apt-get`是高层次的包管理器,分别用于RPM系和Debian系发行版,能够自动解决依赖问题;而 `rpm`是低层次的包管理工具,适合处理单个包;`wget`则是一个功能强大的下载工具,适用于各种下载任务。在实际使用中,根据系统类型和任务需求选择合适的工具,可以大大提高工作效率和系统管理的便利性。
1054 25
|
10月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
567 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
10月前
|
弹性计算 前端开发 Ubuntu
OS Copilot全命令测评报告
作为一名Web前端工程师,我使用OS Copilot的`-t`、`-f`和`|`功能进行了测试。通过创建ECS实例并安装OS Copilot,我顺利完成了以下任务: 1. 环境搭建:使用`-t`参数获取了详细的静态页面发布步骤,解决了环境配置问题 2. 多步操作:借助`-f`参数自动化安装和配置httpd服务器,简化了多步骤操作 3. 文件分析:利用`|`功能分析HTML文件内容,确认是否符合预期 整个过程顺畅无阻,特别是`-t`和`-f`功能极大提高了工作效率。建议将这些功能设为默认自带,以减少安装步骤。总结来说,OS Copilot在处理复杂任务时表现出色,提供了详尽的操作指引和自动化支持
126 8
|
Linux Shell 数据安全/隐私保护

热门文章

最新文章