在 Ubuntu 里“定时器”通常指 systemd 定时器(systemd timer),用来代替传统的 cron。下面按常见用法说明,怎么“安装/配置/启用”一个 systemd 定时器。
systemd 定时器 不需要额外安装软件,Ubuntu 16.04 及以上默认已带 systemd。
你只需要:
假设你要 每天凌晨 2 点执行 /home/user/backup.sh
sudo vim /etc/systemd/system/backup.service
内容:
[Unit]
Description=Backup Script
[Service]
Type=oneshot
ExecStart=/home/user/backup.sh
Type=oneshot表示执行一次就结束
sudo vim /etc/systemd/system/backup.timer
内容:
[Unit]
Description=Run backup daily at 2am
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
说明:
OnCalendar:定时规则Persistent=true:如果关机错过时间,开机后补执行sudo systemctl daemon-reload
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
systemctl list-timers
查看某个定时器:
systemctl status backup.timer
查看任务是否执行:
journalctl -u backup.service
| 需求 | 写法 |
|---|---|
| 每分钟 | OnCalendar=*:0 |
| 每小时 | OnCalendar=hourly |
| 每天 3 点 | OnCalendar=*-*-* 03:00:00 |
| 每周一 | OnCalendar=Mon *-*-* 00:00:00 |
| 每 10 分钟 | OnCalendar=*:0/10 |
sudo apt install gnome-schedule
crontab -e
添加:
0 2 * * * /home/user/backup.sh
如果你愿意,可以告诉我:
我可以直接帮你写完整配置。