温馨提示×

ubuntu定时器怎么设置间隔

小樊
31
2025-12-18 06:35:11
栏目: 智能运维

Ubuntu 定时器设置间隔

一、使用 cron 设置固定间隔

  • 编辑当前用户的定时任务列表:运行命令:crontab -e;如需以 root 身份设置,使用:sudo crontab -e
  • 基本语法:分钟 小时 日 月 星期 命令(五个时间字段 + 要执行的命令)。
  • 间隔写法要点:
    • 斜杠“/”表示“每”,如分钟字段的 */5 表示每 5 分钟执行一次。
    • 逗号“,”列举离散值,连字符“-”表示范围,例如 9-17 表示 9点到17点
  • 常用管理命令:crontab -l(查看)、crontab -r(删除全部,谨慎)。以上操作即可完成分钟级及小时级的固定间隔调度。

二、常见间隔示例

  • 5 分钟执行一次:
    */5 * * * * /usr/local/bin/check_status
    
  • 2 小时执行一次(整点):
    0 */2 * * * /scripts/backup.sh
    
  • 每天 02:00 执行:
    0 2 * * * /scripts/daily.sh
    
  • 工作日(周一至周五)09:00-18:00 每小时执行一次:
    0 9-18 * * 1-5 /usr/sbin/ntpdate pool.ntp.org
    
  • 每月 1 号 00:00 清理日志:
    0 0 1 * * find /var/log -name "*.log" -type f -delete
    

以上示例覆盖了分钟、小时、日、月、周的常见“每隔 N 单位”的写法。

三、需要秒级间隔的处理

  • cron 最小粒度为分钟,无法直接写“每 10 秒”。可用“秒级循环脚本 + 每分钟启动一次”的方式实现:
    1. 创建脚本(如 /usr/local/bin/run_every_10s.sh):
      #!/usr/bin/env bash
      while true; do
        /usr/local/bin/your_task.sh
        sleep 10
      done
      
    2. 赋权:chmod +x /usr/local/bin/run_every_10s.sh
    3. 用 cron 每分钟拉起一次脚本(避免重叠运行可用 flock 锁):
      * * * * * flock -n /tmp/run_every_10s.lock /usr/local/bin/run_every_10s.sh >> /var/log/every_10s.log 2>&1
      
  • 说明:也可用 systemd 定时器实现秒级任务(更现代),但上述方法在 Ubuntu 上通用、易维护。

四、排错与最佳实践

  • 使用绝对路径调用命令与脚本;在 crontab 顶部显式声明环境变量,例如:
    SHELL=/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
  • 将标准输出与错误输出重定向到日志,便于排查:
    */5 * * * * /path/to/script.sh >> /var/log/cron.log 2>&1
    
  • 脚本需具备可执行权限chmod +x /path/to/script.sh
  • 查看任务是否生效:crontab -l;如修改系统级任务,确保 cron 服务处于运行状态(Ubuntu 通常默认已启用)。

0