📜  Linux – Systemd 及其组件(1)

📅  最后修改于: 2023-12-03 15:32:40.808000             🧑  作者: Mango

Linux – Systemd 及其组件

Systemd 是一个系统管理守护进程,可以用来启动、停止、管理系统服务,同时也是 Linux 系统的初始化系统。它是在传统的 SysVinit 和 Upstart 系统管理工具之后,为 Linux 系统提供了一个更加强大、高效和可扩展的系统初始化和管理机制。

Systemd 单位

Systemd 单位是 Systemd 系统管理的基本单元,它可以是一个系统服务、一个设备文件、一个挂载点、一个定时器等等。Systemd 单位的配置文件存放在 /etc/systemd/system/ 目录下,每一个 Systemd 单位都有一个对应的、以 .service、.mount、.device、.target、.socket、.timer 等后缀命名的配置文件。

Systemd 服务

Systemd 服务是 Systemd 提供的一种与系统进程交互的方式,它们可以由 Systemd 启动、停止、重启、查询状态,以及设置各种属性。Systemd 服务可以是基于传统的 SysVinit 脚本编写的服务,也可以是新开发的 Systemd 专用服务。Systemd 服务的配置文件一般位于 /lib/systemd/system/ 和 /etc/systemd/system/ 目录下。

Systemd 设备

Systemd 设备是 Linux 系统中硬件设备节点的一种虚拟化,使用 Systemd 设备可以将某个硬件设备节点转化为一个所需的、可自定义的节点名称。Systemd 设备可以在系统启动时自动创建,也可以通过配置文件手工创建。

Systemd 挂载点

Systemd 挂载点是用来挂载某个硬件设备或者网络文件系统的虚拟节点,在 Systemd 单位中,挂载点的配置文件一般是以 .mount 结尾的。Systemd 挂载点可以在系统启动时自动挂载,也可以在需要的时候手工进行挂载。

Systemd 定时器

Systemd 定时器是用来定时执行某个任务的,类似于 Linux 系统中的计划任务。Systemd 定时器的配置文件一般是以 .timer 结尾的。Systemd 定时器可以定期执行、在特定时间点执行、从上次执行结束后一段时间再次执行等等。

Systemd 资源控制

Systemd 资源控制是 Systemd 提供的一个强大、细粒度的系统资源管理机制,可以用来管理系统进程、服务和应用程序的资源消耗,例如 CPU 时间、内存使用、磁盘 IO 等等。Systemd 资源控制可以有效地防止系统因某个应用程序的异常资源消耗而导致系统宕机或者变慢的问题。

Systemd 常用命令
systemctl

systemctl 命令是 Systemd 中最常用的命令之一,它可以用来启动、停止、重启、查询某个 Systemd 单位的状态等等。以下是一些常用的 systemctl 命令:

# 启动某个服务
systemctl start service_name

# 停止某个服务
systemctl stop service_name

# 重启某个服务
systemctl restart service_name

# 查询某个服务的状态
systemctl status service_name

# 设置某个服务在系统启动时自动启动
systemctl enable service_name

# 取消某个服务在系统启动时自动启动
systemctl disable service_name
journalctl

journalctl 命令用于查询 Systemd 系统日志,可以显示系统启动过程中的各种信息、服务错误消息、用户登录日志等等。以下是一些常用的 journalctl 命令:

# 显示系统启动过程中的日志
journalctl -b

# 显示某个服务的日志
journalctl -u service_name

# 按照时间倒序显示日志
journalctl --reverse

# 在实时模式下显示日志
journalctl -f
systemctl-analyze

systemctl-analyze 命令用于查询 Systemd 启动过程的性能和延迟情况,可以用于优化系统启动过程。以下是一些常用的 systemctl-analyze 命令:

# 显示系统启动用时
systemctl-analyze

# 显示系统启动每个单位用时
systemctl-analyze blame

# 生成启动图谱
systemctl-analyze plot > boot.svg
总结

通过本文的介绍,我们了解了 Systemd 的基本概念和组件,以及常用的 Systemd 命令。Systemd 系统管理工具在 Linux 系统中具有极高的影响力和普及率,在学习 Linux 系统管理和开发过程中,熟悉 Systemd 的使用和原理是必不可少的。