Ubuntu中3种定时任务

cron # 最常用,周期性执行任务

systemd timer # 更现代,适合服务级定时任务

at # 只执行一次的定时任务

1. cron:周期性定时任务

cron 是一套定时任务系统。

你看到这些都属于 cron

复制代码
复制代码
crontab -e
crontab -l
sudo crontab -e
/etc/crontab
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/

典型写法:

复制代码
复制代码
* * * * * /bin/bash /usr/local/scripts/test.sh

例如:

复制代码
复制代码
0 2 * * * /bin/bash /usr/local/scripts/backup.sh

意思是:每天凌晨 2 点执行 backup.sh

所以这种格式:

复制代码
复制代码
分 时 日 月 周 命令

就是 cron 格式


2. systemd timer:systemd 的定时任务

systemd timer 是 systemd 提供的定时器机制。

它不是写在 crontab -e 里,而是写两个文件:

复制代码
复制代码
xxx.service
xxx.timer

例如:

复制代码
复制代码
/etc/systemd/system/backup.service
/etc/systemd/system/backup.timer

backup.service:定义要执行什么任务。

复制代码
复制代码
[Unit]
Description=Backup job

[Service]
Type=oneshot
ExecStart=/bin/bash /usr/local/scripts/backup.sh

backup.timer:定义什么时候执行。

复制代码
复制代码
[Unit]
Description=Run backup every day

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

启动 timer:

复制代码
复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer

查看 timer:

复制代码
复制代码
systemctl list-timers

所以看到这些命令,一般就是 systemd timer

复制代码
复制代码
systemctl list-timers
systemctl status xxx.timer
systemctl enable --now xxx.timer

3. at:一次性定时任务

at 只执行一次,不是周期性。

例如:

复制代码
复制代码
echo "touch /tmp/test.txt" | at now + 10 minutes

意思是:10 分钟后执行一次

查看一次性任务:

复制代码
复制代码
atq

删除一次性任务:

复制代码
复制代码
atrm 任务编号

分类表

类型 用途 配置位置 / 命令 是否周期执行
cron 最常用的周期任务 crontab -e/etc/crontab/etc/cron.daily/
systemd timer 服务级定时任务 xxx.service + xxx.timer 是,也可以一次
at 一次性任务 atatqatrm 否,只执行一次

最简单理解

复制代码
复制代码
cron = 写一行时间表达式,周期执行命令
systemd timer = 写 service + timer 两个配置文件,交给 systemd 管理
at = 指定未来某个时间,只执行一次

你刚开始学 Ubuntu 定时任务,重点掌握这个就行:

复制代码
复制代码
crontab -e

然后写:

复制代码
复制代码
0 2 * * * /bin/bash /usr/local/scripts/backup.sh >> /var/log/backup.log 2>&1

这个就是典型的 cron 定时任务

相关推荐
jieyucx1 小时前
《Go 数据库编程开篇:彻底打通 database/sql 与 MySQL 驱动的连接池调优密码》
数据库·sql·golang
白露与泡影1 小时前
深入理解MySQL事务隔离级别:MVCC机制与Next-Key Lock如何解决幻读问题?
数据库·mysql
Gong-Yu1 小时前
MySQL数据库运维——性能优化进阶2️⃣
运维·数据库·mysql·性能优化
吴声子夜歌1 小时前
SQL经典实例——概述
数据库·sql
布朗克1681 小时前
40 Redis与微服务入门
java·数据库·redis·微服务
我是大猴子2 小时前
Stream流式编程
数据库·sql
Bert.Cai2 小时前
Oracle ASCII函数详解
数据库·oracle
跨境猫小妹2 小时前
多国海关字段持续细化后跨境卖家如何搭建商品信息映射表
大数据·数据库·人工智能·跨境电商·跨境·营销策略