Linux创建systemd定时器代替cron
本文最后更新于 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的博客啦~