ubuntu

ubuntu定时器如何设置重复执行

小樊
44
2025-11-02 08:49:44
栏目: 智能运维

Ubuntu设置定时器重复执行的主流方法:cron与systemd

一、使用cron设置重复定时任务(最常用)

cron是Ubuntu默认的定时任务工具,适合周期性重复执行脚本或命令(如每天备份、每小时清理日志等)。

1. 编辑当前用户的crontab文件

打开终端,输入以下命令进入编辑模式(首次使用会提示选择文本编辑器,如nano或vim):
crontab -e
若需为其他用户设置任务(需管理员权限),可使用:
sudo crontab -e -u username(替换username为目标用户名)。

2. 添加重复执行任务规则

在crontab文件中,每一行代表一个定时任务,核心格式为:
分钟 小时 日 月 星期 命令

3. 常见重复执行示例

4. 保存与验证

编辑完成后,按Ctrl+XYEnter保存并退出(nano编辑器)。

5. 注意事项

二、使用systemd设置重复定时任务(更灵活)

systemd是Ubuntu的系统和服务管理器,适合需要更复杂调度(如依赖其他服务、精确控制执行时间)的场景。

1. 创建systemd服务单元文件

服务单元文件定义需执行的任务,创建路径为/etc/systemd/system/(需管理员权限),例如创建my-task.service
sudo nano /etc/systemd/system/my-task.service
添加以下内容(替换为实际脚本路径):

[Unit]
Description=My Custom Repeat Task
After=network.target  # 可选:依赖网络服务(如需联网)

[Service]
Type=simple         # 任务类型(simple表示立即执行)
ExecStart=/home/user/my-script.sh  # 脚本绝对路径
User=root           # 执行用户(根据需求调整)
Group=root          # 执行组(根据需求调整)

保存并退出。

2. 创建systemd定时器单元文件

定时器单元文件定义任务的执行时间,创建路径为/etc/systemd/system/,例如创建my-task.timer
sudo nano /etc/systemd/system/my-task.timer
添加以下内容(以“每天凌晨3点执行”为例):

[Unit]
Description=Run My Task Daily at 3 AM

[Timer]
OnCalendar=*-*-* 03:00:00  # 每天3点执行(格式:年-月-日 时:分:秒,*表示任意)
Persistent=true            # 若任务错过执行时间,下次启动时补执行

[Install]
WantedBy=timers.target     # 关联到timers.target(系统定时器服务)

若需“每5分钟执行一次”,可将OnCalendar改为:
OnCalendar=*:0/5(每5分钟,从0分钟开始)。

3. 启用并启动定时器

4. 检查定时器状态

0
看了该问题的人还看了