linux定时器使用

在Linux系统中,crontab 是用于设置定时任务的工具。有什么用呢?像我们平时在服务器上要定期定时执行的任务,就可以交给这个crontab来干,比如定期压缩服务产生的日志文件、定期执行数据库分表、定期某些服务组件重启等。


Crontab 基本语法

每个定时任务由6个字段组成(前5个表示时间,第6个是命令):

复制代码
* * * * * 要执行的命令
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7,0和7都代表周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日 (1-31)
│ └──────── 小时 (0-23,24小时设置)
└────────── 分钟 (0-59)

时间字段规则

  1. [*]

    任意值(每分钟/每小时等)。
    示例* * * * * 表示每分钟执行一次。

  2. */n

    每隔 n 个单位执行一次。
    示例*/5 * * * * 每5分钟执行一次。

  3. a-b

    时间范围(从 ab)。
    示例0 9-18 * * * 每天9点到18点整点执行。

  4. a,b,c

    多个离散时间点。
    示例0 1,13 * * * 每天1点和13点执行。

  5. 特殊字符

    • @reboot:系统启动时运行。
    • @daily/ @hourly:简化常见周期(等价于 0 0 * * *0 * * * *)。

常用示例

  1. 每天凌晨3点执行

    复制代码
    0 3 * * * /path/to/script.sh
  2. 每周末(周日)备份

    复制代码
    0 2 * * 7 /usr/bin/backup
  3. 工作日每30分钟检查

    复制代码
    */30 * * * 1-5 /usr/bin/check_status
  4. 每月1号和15号清理日志

    复制代码
    0 0 1,15 * * /usr/bin/clean_logs

如何编辑Crontab

  1. 打开当前用户的crontab

    复制代码
    crontab -e
  2. 查看现有任务

    复制代码
    crontab -l
  3. 日志路径

    执行日志通常可在 /var/log/syslogjournalctl -u cron 查看。


注意事项

  1. 环境变量

    cron任务默认无用户环境变量,建议在脚本中显式设置(如 PATH)。

  2. 权限限制

    普通用户只能编辑自己的crontab,root用户可通过 crontab -u username -e 管理其他用户。

  3. 路径问题

    命令建议使用绝对路径(如 /usr/bin/python3 而非 python3)。

如果需要更复杂的调度逻辑(如依赖任务),可考虑使用 systemd timers 或第三方工具(如 anacron)。

本文由mdnice多平台发布

相关推荐
candyTong5 小时前
Claude Code 的 Edit 工具是怎么工作的
javascript·后端·架构
GetcharZp7 小时前
GitHub 2.4 万 Star!D2 正在重新定义程序员画图方式
后端
zhangxingchao8 小时前
多 Agent 架构到底怎么选?从 Claude Agent Teams、Cognition/Devin 到工程落地原则
前端·人工智能·后端
IT_陈寒8 小时前
SpringBoot那个自动配置的坑,害我排查到凌晨三点
前端·人工智能·后端
ServBay8 小时前
OpenCode 和它的7款必备插件
后端·github·ai编程
ping某8 小时前
逐字节拆解 tcpdump
后端
阿凡9807308 小时前
花 100 dollar,用 Claude 打通 EasyEDA&Fusion 双向同步
后端·程序员
irving同学462389 小时前
从零搭建生产级 RAG:Embedding、Chunking、Hybrid Search 与 Reranker
前端·后端
她的男孩9 小时前
从零搭一个企业后台,为什么我把能力拆成 Starter 和 Plugin
java·后端·架构
胡志辉9 小时前
本地 AI 编码助手从 0 配起来:先选模型,再接 Ollama、VS Code、Claude Code 和 Codex
前端·后端