在RockyLinux系统中,除了传统的
cron工具外,还可以使用更现代、功能更强大的
systemd定时器(systemd timer)来执行周期性任务。本教程将带你从零开始,详细讲解如何在RockyLinux上创建和管理
systemd定时器,即使是Linux新手也能轻松掌握。
为什么选择systemd定时器?
相比传统的cron,systemd定时器具有以下优势:
与systemd日志集成,便于调试和监控 支持更灵活的时间表达式(如启动后延迟、随机延迟等) 可以依赖其他systemd服务,实现复杂的任务调度 天然支持用户级和系统级定时任务准备工作
确保你使用的是RockyLinux 8或更高版本,并以具有sudo权限的用户登录。
步骤一:创建一个要执行的服务单元(Service Unit)
systemd定时器需要搭配一个service文件来定义具体要执行的任务。我们以每天备份日志为例。
首先,创建一个名为
backup-logs.service的文件:
在文件中写入以下内容: 说明: 接下来,创建一个同名但扩展名为 写入以下内容(每天凌晨2点执行): 关键参数说明: 保存文件后,重新加载systemd配置: 启用并启动定时器(注意:启动的是 查看所有激活的定时器: 查看定时器状态: 查看最近的日志输出(用于调试): 在 通过本教程,你已经学会了如何在RockyLinux中使用systemd定时器来替代传统cron,实现更强大、更可靠的自动化任务调度。无论是日常备份、日志清理还是系统维护,systemd timer教程都能为你提供清晰的指导。 记住,Linux定时任务是系统管理员的必备技能,而掌握RockyLinux自动化任务将极大提升你的运维效率。 提示:修改定时器或服务文件后,务必执行sudo vim /etc/systemd/system/backup-logs.service [Unit]Description=Backup system logs daily[Service]Type=oneshotExecStart=/bin/sh -c 'tar -czf /var/backups/logs-$(date +%%Y%%m%%d).tar.gz /var/log'User=root[Install]WantedBy=multi-user.target Type=oneshot
表示该服务只运行一次就退出 ExecStart
是实际执行的命令,这里将/var/log
目录打包压缩到/var/backups/
注意日期格式中的%%
是为了在systemd中转义%
符号 步骤二:创建对应的定时器单元(Timer Unit)
.timer
的文件:sudo vim /etc/systemd/system/backup-logs.timer [Unit]Description=Run backup-logs daily at 2 AM[Timer]OnCalendar=dailyPersistent=true[Install]WantedBy=timers.target OnCalendar=daily
等价于*-*-* 00:00:00
,但更常用的是指定具体时间,例如:OnCalendar=*-*-* 02:00:00
Persistent=true
表示如果系统在预定时间关机,开机后会立即补执行一次 步骤三:启用并启动定时器
sudo systemctl daemon-reload .timer
文件,不是.service
):sudo systemctl enable --now backup-logs.timer 步骤四:验证和调试
systemctl list-timers --all systemctl status backup-logs.timer journalctl -u backup-logs.service -n 20 常见时间格式示例
OnCalendar=
中,你可以使用以下格式:hourly
:每小时 daily
:每天(默认00:00) weekly
:每周一00:00 monthly
:每月1号00:00 *-*-* 03:30:00
:每天3:30 Mon..Fri *-*-* 09:00:00
:工作日上午9点 *-*-1,15 10:00:00
:每月1号和15号上午10点 总结
systemctl daemon-reload
才能生效。
