Ubuntu系统中,cron(传统周期性任务工具)和systemd timers(现代系统级定时工具)是设置定时器的核心方式,以下是详细操作步骤:
cron是Ubuntu默认安装的定时任务工具,通过crontab命令管理用户级定时任务,适合每天、每周、每月等周期性执行的需求。
打开终端,输入以下命令启动编辑器(默认为nano,可按提示切换为vim):
crontab -e
如果是首次使用,系统会提示选择编辑器,选择熟悉的工具即可。
crontab文件的每一行代表一个定时任务,格式为:
分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期几(0-7,0和7均代表周日) 要执行的命令(绝对路径)
常见示例:
/home/user/backup.sh脚本:0 1 * * * /home/user/backup.sh
/path/to/script.sh:*/5 * * * * /path/to/script.sh
/home/user/report.sh:0 8 * * 1 /home/user/report.sh
nano编辑器:按Ctrl+O保存,Ctrl+X退出;vim编辑器:按Esc,输入:wq保存并退出。crontab -l
crontab -r
crontab -e打开文件,手动删除对应行并保存。/home/user/script.sh,而非./script.sh);chmod +x /path/to/script.sh设置;0 1 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1)。systemd timers是Ubuntu 16.04及以上版本的现代定时工具,支持更灵活的调度(如精确到秒、依赖关系),适合需要与systemd集成的场景。
服务单元文件(.service)用于指定要执行的命令或脚本。
my_backup.service为例):sudo nano /etc/systemd/system/my_backup.service
[Unit]
Description=Daily Backup Service
[Service]
ExecStart=/home/user/backup.sh
定时器单元文件(.timer)用于设置任务的执行时间。
my_backup.timer为例):sudo nano /etc/systemd/system/my_backup.timer
OnCalendar):[Unit]
Description=Run backup daily at 1 AM
[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true # 若系统关机错过时间,开机后补执行
[Install]
WantedBy=timers.target
# 重新加载systemd守护进程,识别新文件
sudo systemctl daemon-reload
# 启用定时器(开机自启)
sudo systemctl enable my_backup.timer
# 立即启动定时器(无需等待下次触发时间)
sudo systemctl start my_backup.timer
# 查看所有定时器状态
sudo systemctl list-timers --all
# 查看指定定时器的详细信息
systemctl status my_backup.timer
sudo systemctl disable --now my_backup.timer
sudo rm /etc/systemd/system/my_backup.{service,timer}
sudo apt install at;echo "command" | at now + 10 minutes;atq;atrm <job_id>。以上方法覆盖了Ubuntu中常见的定时需求,可根据任务类型(周期性/一次性、用户级/系统级)选择合适的工具。