在Linux系统管理中,定时执行任务是一项基础而重要的技能。传统上我们使用cron来实现定时任务,但在现代的CentOS(特别是CentOS 7及以上版本)中,systemd定时器(systemd timer)提供了一种更强大、更灵活、与系统服务深度集成的替代方案。
本教程将手把手教你如何在CentOS系统中创建和管理systemd定时器,即使你是Linux新手也能轻松上手!
systemd定时器需要搭配一个服务单元(.service文件)来执行实际任务。我们先创建一个用于备份日志的服务。
创建服务文件 /etc/systemd/system/log-backup.service:
[Unit]Description=Backup system logs[Service]Type=oneshotExecStart=/bin/sh -c 'tar -czf /backup/logs-$(date +%%Y%%m%%d).tar.gz /var/log'User=root[Install]WantedBy=multi-user.target
说明:
Type=oneshot 表示该服务只运行一次就退出ExecStart 是要执行的命令,这里我们每天打包/var/log目录%%是为了在systemd中转义%现在我们为上面的服务创建一个定时器,让它每天凌晨2点执行。
创建定时器文件 /etc/systemd/system/log-backup.timer:
[Unit]Description=Run log backup daily at 2 AM[Timer]OnCalendar=dailyPersistent=true[Install]WantedBy=timers.target
关键参数解释:
OnCalendar=daily 等价于 *-*-* 02:00:00,表示每天凌晨2点Persistent=true 表示如果系统在预定时间关机,开机后会立即补执行一次保存文件后,我们需要重新加载systemd配置,并启用定时器:
# 重新加载systemd配置sudo systemctl daemon-reload# 启用并启动定时器sudo systemctl enable --now log-backup.timer
你可以使用以下命令查看所有已激活的定时器:
systemctl list-timers --all
查看服务执行日志:
journalctl -u log-backup.service -f
| 表达式 | 含义 |
|---|---|
| hourly | 每小时整点 |
| daily | 每天00:00 |
| weekly | 每周一00:00 |
| monthly | 每月1号00:00 |
| *-*-* 15:30:00 | 每天15:30 |
| Mon..Fri *-*-* 09:00:00 | 工作日早上9点 |
通过本教程,你已经学会了如何在CentOS系统中使用systemd定时器来替代传统的cron任务。这种现代方法不仅功能更强大,而且与系统其他组件集成得更好,是实现Linux定时任务和CentOS自动化任务的最佳实践之一。
记住关键点:一个定时器(.timer)必须对应一个服务(.service),两者名称必须一致(除了扩展名),并且都需要启用才能正常工作。
现在,你可以尝试创建自己的定时任务了!无论是日志清理、数据同步还是系统监控,systemd timer教程为你打开了通往自动化运维的大门。
本文由主机测评网于2025-12-11发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126054.html