Linux操作系统(十三)——系统服务管理

一、由来
历史上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 服务管理实例






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

所有评论(0)