岁岁年,碎碎念

cron 基础知识

2023.09.05     150

Cron

“Cron” 这个词源自希腊语中的 “χρόνος”(chronos),意为 “时间”。它允许用户按照特定的时间表(例如每天、每周、每月等)来执行任务,而不需要手动干预。

Cron 是在 Unix 和类 Unix 操作系统中用于执行预定任务的时间管理工具。它允许用户在指定的时间间隔内自动运行命令、脚本或程序。

基本概念

Cron表达式: Cron 任务的核心是一个 Cron 表达式,它由 5 个或 6 个字段组成,用空格或制表符分隔。这些字段代表了任务的分钟、小时、日期、月份和星期几。在某些实现中,还可以在表达式的开头添加一个用于年份的字段。

* * * * * command_to_run
│ │ │ │ │
│ │ │ │ └─── 星期几 (0 - 6) (0表示周日)
│ │ │ └──────── 月份 (1 - 12)
│ │ └───────────── 日期 (1 - 31)
│ └────────────────── 小时 (0 - 23)
└─────────────────────── 分钟 (0 - 59)
  1. 特殊字符: 在Cron表达式中,你可以使用一些特殊字符来代表特定的值:
    • * 表示“每”,例如,* 在分钟字段上表示每分钟执行一次。
    • */n 表示每隔n个单位执行一次,例如,*/15 在分钟字段上表示每15分钟执行一次。
    • n 表示特定的数值,例如,5 在小时字段上表示在第5小时执行。

编辑Cron任务:

  1. 打开终端或 SSH 到你的服务器。

  2. 使用以下命令编辑用户的 Cron 任务列表:

    crontab -e
    
  3. 在打开的编辑器中,按照 Cron 表达式的格式,添加你的任务。例如,要在每天的下午 2 点运行脚本myscript.sh,可以添加类似以下的行:

    0 14 * * * /path/to/myscript.sh
    
  4. 保存并关闭文件。Cron 将自动保存你的更改并安排任务。

示例:

以下是一些示例 Cron 表达式:

  • 每天凌晨 3 点运行备份脚本:

    0 3 * * * /path/to/backup_script.sh
    
  • 每周一和周四下午5点30分清理临时文件:

    30 17 * * 1,4 /path/to/cleanup_script.sh
    
  • 每小时执行一次任务:

    0 * * * * /path/to/hourly_task.sh
    

查看和删除Cron任务:

  • 查看当前用户的 Cron 任务列表:

    crontab -l
    
  • 删除当前用户的所有 Cron 任务:

    crontab -r
    

注意事项:

  • 在编辑 Cron 任务时,确保你的命令和脚本的路径是正确的。
  • 任务的输出通常会通过电子邮件发送给用户。你可以通过在 Cron 表达式末尾添加> /dev/null 2>&1来禁用这些通知。

请注意,Cron 在不同的操作系统中可能会有一些细微的差异,所以在实际使用时最好查阅你的操作系统文档以获取更详细的信息。