本文最后更新于 2024-07-09,文章内容可能已经过时。

一、systemd定时器简介

systemd定时器是systemd中的一个组件,允许用户定义和配置定时任务,并在设定的时间点或时间间隔触发执行。这些定时任务可以包括脚本、命令、服务或其他系统任务的执行。定时器单元文件通常以 .timer 后缀结尾,存储在 /etc/systemd/system 目录或者 /usr/lib/systemd/system 目录下。

从触发时间的角度,systemd定时器可以分为两种类型:单调定时器和实时定时器。单调定时器从一个特定的时间(如系统启动或systemd服务单元执行的开始时间)开始后,经过一段时间触发。而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。

使用systemd定时器,可以方便地设置定时任务,如每小时发送一封电子邮件,或者在每周日的晚上12点清理日志文件等。此外,systemd定时器还提供了自动生成日志的功能,便于除错。还可以设置内存和CPU的使用额度,以控制任务执行时的资源消耗。同时,systemd定时器也支持任务的拆分和依赖其他Systemd单元,以实现更复杂的任务调度。

(以上由ai生成)


二、创建systemd定时器


要使用systemd的定时器,关键是要创建一个定时器但源文件和一个配套的服务单元文件,然后启动这些单元文件

创建单调定时器


首先执行以下命令临时改变 SELinux 的状态

susetenforce 0

编写任务脚本文件,这里是一个简单的引导区备份脚本,在/usr/local/bin目录下编写

vim /usr/local/bin/boot_backup
#! /usr/bin/bash
echo `date` >> /root/syslog.txt

给命令授予执行权限,执行以下命令

 chmod +x /usr/local/bin/boot_backup

图片编辑

编写一个配套的服务单元文件,将其命名为boot_backup.service,保存在/etc/systemd/system目录下

vim /etc/systemd/system/boot_backup.service
Description=Backup boot
[Service]Type=simpleExecStart=/usr/local/bin/boot_backup

图片编辑

编写一个定时器单元文件,将其命名为boot_backup.timer,保存在/etc/systemd/system目录下

 vim /etc/systemd/system/boot_backup.timer
[Unit]Description=Run boot backup weekly and on boot
[Timer]OnBootSec=1hOnUnitActiveSec=3s
[Install]WantedBy=multi-user.target

图片编辑

对单元文件重载

systemctl daemon-reload

执行开机启动(启动的是.timer文件,而不是.service文件。因为配套的service文件有timer文件启动。

systemctl enable boot_backup.timer

启动定时器

systemctl start  boot_backup.timer

查看运行状态(绿色表示已启动)

systemctl status boot_backup.timer

图片编辑

可执行以下命令列出定时器

systemctl list-timers

查看日志文件

tail -f syslog.txt

图片编辑

小编唠叨:在csdn上写老师要看质量分,只能将介绍写多点咯,感觉都没啥写的,点击下方原文就是csdn的博客啦~