📜  systemd 计划事件只不过是服务 (1)

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

Systemd 计划事件只不过是服务

简介

Systemd 是一个在 Linux 系统上用于管理系统进程的后台守护进程。它是一个重要的系统组件,可以帮助管理和监控系统进程的运行、启动和停止。Systemd 计划事件是 Systemd 服务的核心概念之一,它通过定义一组于时间相关的事件和相应的动作,实现了对系统服务的高度可控性和灵活性。

Systemd 计划事件的基本结构

Systemd 计划事件主要由以下三个部分组成:

  1. 定义计划事件的时间规则。

  2. 定义事件触发时需要执行的动作。

  3. 定义计划事件的名称和描述信息。

在 Systemd 中,可以使用 Systemd Timer Unit 文件(后缀为 .timer)来定义计划事件。每个 Timer Unit 文件都定义了一个计划事件,其中包括了上述三个部分的具体实现细节。

以下是一个简单的 Timer Unit 文件示例:

[Unit]
Description=My timer unit

[Timer]
OnCalendar=*-*-* 00:00:00
Unit=my-service@1.service

[Install]
WantedBy=timers.target

上述示例中,我们定义了一个名为 my.timer 的计划事件,它会在每天的 00:00:00 触发,并执行 my-service@1.service 这个服务的对应操作。

计划事件时间规则

在 Timer Unit 文件中,我们可以使用 OnCalendar 选项来定义计划事件的触发时间规则。

OnCalendar 的选项值可以是一个 Cron 格式的字符串,也可以是一个 ISO 8601 格式的字符串。其中,Cron 格式的字符串是一种常见的时间表达式格式,在 Linux 系统中被广泛应用,通常包含有分、时、日、月、周几等多个时间段的限制条件,用于定义一些周期性的任务。而 ISO 8601 格式则是一种更加简单的时间表达式格式,通常只包含有年、月、日等时间段的限制条件,适合用于定义一些与日期相关的任务。

下面是一些常见的 OnCalendar 选项值和对应的含义:

  • OnCalendar=*-*-* *:*:*:每一分钟触发。

  • OnCalendar=0 0 * * *:每天凌晨 0 点触发。

  • OnCalendar=Mon *-*-* *:*:*:每周一触发。

  • OnCalendar=*-*-15 *:*:*:每个月的 15 日触发。

  • OnCalendar=2022-01-* *:*:*:2022 年 1 月每一天触发。

计划事件动作

在 Timer Unit 文件中,我们可以使用 Unit 选项来定义计划事件触发时需要执行的动作。

Unit 的选项值应该是一个 Systemd Service Unit 文件(.service)的路径,指定了触发计划事件后需要启动的服务。

在 Service Unit 文件中,我们可以定义服务的名称、描述、启动命令、环境变量等相关信息。每个 Service Unit 文件都是负责一个具体的系统服务的定义和管理。

计划事件的安装和启动

在 Timer Unit 文件中,我们可以使用 Install 选项来定义计划事件的安装和启动相关信息。

Install 的选项值应该是一个 Systemd Target Unit 文件(.target)的路径,指定了计划事件在系统启动过程中需要被安装和启动的时机。

常用的 Install 选项值包括:

  • WantedBy=timers.target:在系统启动时自动安装和启动计划事件。

  • Also=my.service:在安装和启动计划事件时同时安装和启动 my.service 服务。

总结

Systemd 计划事件是 Systemd 服务的重要组成部分,通过定义一组时间规则和相应的动作,实现了系统服务的高度可控性和灵活性。在实际应用中,我们可以使用 Timer Unit 文件来定义和管理计划事件,有效地控制和管理系统服务的运行状态。