一、由来

        历史上Linux的启动一直采用init进程,下面的命令用来启动服务。

        这种方法有两个缺点:

  • 一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  • 二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。

二、Systemd概述

        Systemd就是为了解决这些问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案,根据Linux惯例,字母d是守护进程(daemon)的缩写,Systemd这个名字的含义,就是它要守护整个系统。

        使用了Systemd,就不需要再用init了。Systemd取代了initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。

        Systemd的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反”keep simple, keep stupid”的Unix哲学。

三、系统管理

        Systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

1、systemctl 是Systemd的主命令,用于管理系统

2、systemd-analyze 命令用于查看启动耗时

3、hostnamectl 命令用于查看当前主机的信息

4、localectl 命令用于查看本地化设置

5、timedatectl 命令用于查看当前时区设置

6、loginctl 命令用于查看当前登录的用户

四、Unit

1、含义

        Systemd可以管理所有系统资源,不同的资源统称为 Unit(单位),Unit一共分成以下12种。

        systemctl list-units命令可以查看当前系统的所有Unit。

2、Unit的状态

        systemctl status命令用于查看系统状态和单个Unit的状态。

        除了status命令,systemctl还提供了三个查询状态的简单方法,主要供脚本内部的判断语句使用。

3、Unit管理

        对于用户来说,最常用的是下面这些命令,用于启动和停止Unit(主要是service)。

4、依赖关系

        Unit之间存在依赖关系:A依赖于B,就意味着Systemd在启动A的时候,同时会去启动B。systemctl list-dependencies命令列出一个Unit的所有依赖。

        上面命令的输出结果之中,有些依赖是Target类型(详见下文),默认不会展开显示。如果要展开Target,就需要使用--all参数。

五、服务管理实例 ssh 服务管理实例

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐