Skip to content

Crontab 快速入门指南

介绍

  • crontab 是一个调度程序,用于安排定期运行的任务。
  • 每个用户都有自己的 crontab 文件,用于存储他们的任务计划。
  • 使用 cron 服务来根据 crontab 文件中的规则定时执行任务。

Crontab 的基本语法

时间格式

crontab 的每一行定义了一项任务的执行时间及要运行的命令。其格式如下:

plaintext
* * * * * 命令
- - - - -
| | | | |
| | | | +---- 星期几 (0 - 7, 0 或 7 表示周日)
| | | +------ 月份 (1 - 12)
| | +-------- 日期 (1 - 31)
| +---------- 小时 (0 - 23)
+------------ 分钟 (0 - 59)

示例

以下是一些常见的时间设置示例:

  • * * * * *:每分钟执行一次
  • 0 * * * *:每小时的第 0 分钟执行一次
  • 0 2 * * *:每天凌晨 2 点执行一次
  • 0 2 * * 1:每周一凌晨 2 点执行一次
  • */5 * * * *:每 5 分钟执行一次

常用命令

编辑 Crontab 文件

使用以下命令来编辑当前用户的 crontab 文件:

bash
crontab -e

查看 Crontab 文件

查看当前用户的 crontab 文件内容:

bash
crontab -l

删除 Crontab 文件

删除当前用户的所有定时任务:

bash
crontab -r

Crontab 示例

假设我们有一个脚本 ~/workspace/update_tv.sh,希望每天晚上 2 点(中国时间)执行,时间换算为 UTC 为每天 18:00。以下为 crontab 的配置:

bash
0 18 * * * ~/workspace/update_tv.sh

特殊符号

  • *:表示任意值。例如,* 在“小时”字段表示每小时。
  • ,:用逗号分隔多个值。例如,0,15,30,45 表示每小时的 0、15、30 和 45 分钟。
  • -:表示范围。例如,1-5 表示从 1 到 5。
  • /:表示步长。例如,*/10 表示每 10 分钟执行一次。
  • @reboot:在系统启动后立即执行任务。

常见问题及解决

  1. 任务未运行?

    • 确保 cron 服务正在运行:
      bash
      sudo service cron status
    • 确保任务中的脚本有执行权限:
      bash
      chmod +x /path/to/your/script.sh
  2. 如何查看任务日志?

    • 查看系统日志文件:
      bash
      cat /var/log/syslog | grep cron
  3. 如何指定环境变量?

    • crontab 文件顶部添加变量。例如:
      bash
      PATH=/usr/bin:/bin:/usr/sbin:/sbin

基于 MIT 许可发布