systemd是linux系统第一个运行的进程,用来创建系统的守护进程来管理整个linux系统。systemd取代init的一个优势就是他集合了丰富的功能,同时支持并行启动守护进程,使用起来方便。可以理解为systemd初始化整个系统所需的资源。

文章目录

  • 一、systemd 基本命令
    • 1、systemctl
    • 2、systemd-analyze
  • 二、Unit
    • 1、分类
    • 2、unit管理
    • 3、依赖、顺序
  • 三、Unit配置文件
    • 【Uint】区块
    • 【Install】区块
    • 【Service】区块
  • 四、Target

一、systemd 基本命令

通过命令控制systemd来管理系统的服务。

1、systemctl

systemctl是最基本的一个命令,可用于管理系统:

# 重启系统 $ sudo systemctl reboot
# 关闭系统,切断电源 $ sudo systemctl poweroff
# CPU停止工作 $ sudo systemctl halt
# 暂停系统 $ sudo systemctl suspend
# 让系统进入冬眠状态 $ sudo systemctl hibernate
# 让系统进入交互式休眠状态 $ sudo systemctl hybrid-sleep
# 启动进入救援状态(单用户状态) $ sudo systemctl rescue

2、systemd-analyze

systemd-analyze用于分析系统启动守护进程所耗费的时间。

# 查看启动耗时 $ systemd-analyze
# 查看每个服务的启动耗时 $ systemd-analyze blame
# 显示瀑布状的启动过程流 $ systemd-analyze critical-chain
# 显示指定服务的启动流 $ systemd-analyze critical-chain atd.service

二、Unit

Systemd 可以管理的系统资源。不同的资源统称为 Unit(单位)。

1、分类

Unit有12种:

  • service:系统服务
  • target:多个unit构成的一个组
  • mount:文件系统挂载点
  • automount:自动挂载点
  • path:文件或路径
  • scope:不是由systemd启动的外部进程
  • slice:进程组
  • socket:进程间通信的socket
  • swap:swap文件
  • timer:定时器
  • device:硬件设备

2、unit管理

最常用的unit管理命令:

  • systemctl start unit
  • systemctl stop unit
  • systemctl restart unit
  • systemctl reload unit(重新加载unit的配置文件)
  • systemctl kill unit(杀死unit的所有进程)
  • systemctl daemon-reload(重新加载所有修改过的配置文件)

3、依赖、顺序

Unit 之间存在依赖关系:若A 依赖于 B,就意味着 Systemd 在启动 A 的时候,同时会去启动 B。

systemctl list-dependencies命令列出一个 Unit 的所有依赖。

  • want:表示弱依赖,若一个弱依赖的服务异常关闭,本服务不受影响
  • require:表示强依赖,若一个强依赖的服务异常关闭,本服务也要关闭
  • after:本服务要在之后执行
  • before:本服务要在之前执行

注意,Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。

三、Unit配置文件

每一个 Unit 都有一个配置文件,告诉 Systemd 怎么启动这个 Unit 。

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,真正的配置文件存放在/lib/systemd/system/目录下

【Uint】区块

[Unit]区块用来定义 Unit 的内容,配置与其他 Unit 的依赖、启动顺序关系。它的主要字段如下。

Description:简短描述 Documentation:文档地址 Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败 Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败 BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行 Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动 After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前启动

【Install】区块

定义如何启动,以及是否开机启动。它的主要字段如下。

WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中 RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中 Alias:当前 Unit 可用于启动的别名 Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit

【Service】区块

Service 类型的 Unit 才有这个区块。它的主要字段如下。

Type:定义启动时的进程行为。它有以下几种值。 Type=simple:默认值,执行ExecStart指定的命令,启动主进程 Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下执行 Type=idle:若有其他任务执行完毕,当前服务才会运行 ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令 ExecStartPost:启动当前服务之后执行的命令 ExecReload:重启当前服务时执行的命令 ExecStop:停止当前服务时执行的命令 ExecStopPost:停止当其服务之后执行的命令 RestartSec:自动重启当前服务间隔的秒数 Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数 Environment:指定环境变量 RemainAfterExit:unit的进程退出后,unit资源保留下来

四、Target

systemd管理的Unit很多,一个个启动很麻烦,用target来帮助系统大量启动Unit。Target 就是一个 Unit 组,包含许多 Unit。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。

systemd启动的第一个target为default.target,他是一个软链接,能指向multi-user.target或graphical.target.(用户控制)

graphical.target启动了图形界面所需的服务,包括了multi-user.target.

systemd启动的服务流程可从官网提供的流程图了解:
https://www.freedesktop.org/software/systemd/man/bootup.html#System%20Manager%20Bootup

# 查看当前系统的所有 Target $ systemctl list-unit-files --type=target
# 查看一个 Target 包含的所有 Unit $ systemctl list-dependencies multi-user.target
# 查看启动时的默认 Target $ systemctl get-default
# 设置启动时的默认 Target $ sudo systemctl set-default multi-user.target

systemd 简介相关推荐

  1. linux 初始化工作进程 systemd简介

    从 init 系统说起 linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化.内核初始化的最后一步就是启动 PID ...

  2. linux服务 Systemd 简介

    systemctl常用命令介绍 Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器. Systemd是一个系统管理守护进程.工具和库的集合,用于取代System V ...

  3. Linux 系统服务管理和控制程序(初始化系统/Init System) -- systemd 介绍

    文章目录 systemd 简介 systemd 启动过程概述 Systemd的争议 systemd 简介 开发systemd的主要目的就是减少系统引导时间和计算开销.systemd(系统管理守护进程) ...

  4. CentOS 7 Linux 的初始化系统(系统服务管理和控制程序/Init System) -- systemd 详解

    文章目录 一.systemd 的由来 (一)常用的 init 系统 (二)init 程序的缺点 (三)systemd 简介 (四)systemd 架构图 二.服务管理 三.unit 配置文件 (一)概 ...

  5. Systemd管理示例

    Systemd简介: Systemd是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程. 首先简单了解一下centos的启动流程; POST --> B ...

  6. systemd wsl 测试笔记

    文章目录 systemd 简介 WSL systemd systemctl journalctl hello service Sleep 与 Timeout 测试 Requires 测试 After ...

  7. centos8之systemd管理服务开机自启动

    一.Systemd简介   systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源 ...

  8. linux Systemd详解

    1.Systemd 简介 Systemd 是一系列工具的集合,其作用也远远不仅是启动操作系统,它还接管了后台服务.结束.状态查询,以及日志归档.设备管理.电源管理.定时任务等许多职责,并支持通过特定事 ...

  9. Linux基础知识之systemd详解

    0x00 Systemd 简述 1.Linux 启动流程 2.主角登场 0x01 Systemd Unit 1.配置文件 2.启动流程 3.进程树(Process tree) 4.运行级别 0x02 ...

最新文章

  1. 【播放器SDK】Android如何实现固定竖屏播放视频
  2. 20140710文安c++面试总结
  3. 怎么获取layer中的表单值_layer获取弹出frame层数据
  4. 在JDK 9中将InputStream传输到OutputStream
  5. 在linux中加固mysql_mysql在linux下的安装
  6. PostgreSQL+安装及常见问题
  7. 关于Acegi的详细信息(配置)
  8. iOS - - JSON 和 XML解析
  9. NUnit单元测试笔记
  10. win7桌面小工具 html5,Win7桌面小工具打不开怎么办
  11. Ignite基础知识原理
  12. Ch6 深度前馈神经网络
  13. POE交换机和普通交换机哪里不同
  14. jmeter 打开报错_jmeter打开.jmx文件报错的解决办法
  15. 「GoTeam 招聘时间」金山办公 WPS Go 中高级开发(广州/珠海)
  16. python简单爬虫 多线程爬取京东淘宝信息教程
  17. Excel中自定义选项中没有内容,如何解决?
  18. 二、计算机网络知识汇总
  19. Centos7常用指令
  20. 24段魔尺--小海龟图案

热门文章

  1. Mask RCNN 实战(二)--像黑镜一样屏蔽图片和视频中的人和物体
  2. BlueKing3-作业平台
  3. Freeswitch智能语音开发之TTS
  4. 如何在网上挣钱,这几个项目让你月入过万元
  5. 数据表格之多表头设置
  6. 第一章 数据仓库理论专题
  7. DDD如何区分实体和值对象
  8. 类似苹果数据线的android,除了常见的安卓、苹果、Type-c,还有哪些你不知道的手机数据线?...
  9. 美团分布式mysql_9种分布式ID生成之美团(Leaf)实战
  10. txt电子书如何用安卓手机完美打开?