📅  最后修改于: 2023-12-03 15:20:26.812000             🧑  作者: Mango
Systemd 是一个在 Linux 系统上用于管理系统进程的后台守护进程。它是一个重要的系统组件,可以帮助管理和监控系统进程的运行、启动和停止。Systemd 计划事件是 Systemd 服务的核心概念之一,它通过定义一组于时间相关的事件和相应的动作,实现了对系统服务的高度可控性和灵活性。
Systemd 计划事件主要由以下三个部分组成:
定义计划事件的时间规则。
定义事件触发时需要执行的动作。
定义计划事件的名称和描述信息。
在 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 文件来定义和管理计划事件,有效地控制和管理系统服务的运行状态。