温馨提示×

ubuntu定时器怎么设置周期

小樊
48
2026-01-04 20:48:35
栏目: 智能运维

Ubuntu 定时器设置周期

一、使用 cron 设置分钟级周期

  • 编辑当前用户的定时任务:crontab -e;如需以 root 身份:sudo crontab -e
  • 基本语法:分 时 日 月 周 命令(五个时间字段 + 要执行的命令)。
  • 常用周期写法与示例:
    • 每分钟:每分钟执行" * * * * /path/to/cmd"*
    • 每5分钟:“*/5 * * * * /path/to/cmd”
    • 每2小时的第0分:*"0 /2 * * * /path/to/cmd"
    • 每天 02:00:“0 2 * * * /path/to/cmd”
    • 每周一 09:00:“0 9 * * 1 /path/to/cmd”
    • 每月 1 日 00:00:“0 0 1 * * /path/to/cmd”
  • 特殊符号:*(任意)、/(间隔,如 /10 表示每10个单位)、-(范围)、,*(枚举)。

二、秒级周期的可行做法

  • cron 最小粒度为1分钟,要实现“每10秒”这类秒级周期,可用“主任务 + 内循环”的方式:
    # 每10秒执行一次(第0-5分各触发一次,每次循环10秒)
    * * * * * for i in {0..5}; do /usr/bin/your_cmd >> /var/log/your.log 2>&1; sleep 10; done
    
  • 说明:
    • 该写法依赖 shell 内建循环与 sleep,请确保命令路径为绝对路径,并将标准输出/错误重定向到日志以便排查。
    • 若脚本中用到 %(如 date 的格式化),在 crontab 里需写成 % 进行转义。

三、服务管理与常用命令

  • 查看状态:sudo systemctl status cron
  • 启动/停止/重启:sudo systemctl start|stop|restart cron
  • 列出/编辑/删除当前用户任务:crontab -l / crontab -e / crontab -r
  • 说明:修改后通常无需手动重启 cron,新任务会被自动加载;如遇到异常,再尝试重启服务。

四、日志与排错要点

  • Ubuntu 默认可能未开启 cron 日志,编辑 /etc/rsyslog.d/50-default.conf,取消注释行:cron. /var/log/cron.log*,然后重启 rsyslog:sudo systemctl restart rsyslog,即可通过 tail -f /var/log/cron.log 查看执行记录。
  • 建议在 crontab 顶部显式声明环境,避免 PATH/Shell 不一致导致“找不到命令”:
    SHELL=/bin/bash
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    * * * * * /absolute/path/to/script.sh >> /var/log/script.log 2>&1
    
  • 脚本务必使用绝对路径,并赋予可执行权限:chmod +x /path/to/script.sh

0