Crontab 编辑器

Crontab 表达式

格式:分钟 小时 日期 月份 星期 命令(可直接编辑)

Crontab 解析器

表达式描述:

执行时间:

Crontab 命令详解

参数说明

crontab 命令的常用参数:

参数 说明 示例
-e 编辑当前用户的 crontab 文件 crontab -e
-l 列出当前用户的 crontab 内容 crontab -l
-r 删除当前用户的 crontab 文件(不提示确认) crontab -r
-i 交互式删除,删除前会提示确认(通常与 -r 一起使用) crontab -ri
-u 指定用户(需要 root 权限),用于查看或编辑其他用户的 crontab crontab -u username -l
file 从指定文件安装 crontab(不使用 - 参数时) crontab myjobs.txt

格式说明

Crontab 表达式由6个字段组成,用空格分隔:

分钟 小时 日期 月份 星期 命令

字段说明

字段 取值范围 说明
分钟 0-59 每小时的第几分钟执行
小时 0-23 每天的第几小时执行
日期 1-31 每月的第几天执行
月份 1-12 每年的第几月执行
星期 0-7 每周的第几天执行(0和7都表示周日)
命令 - 要执行的命令或脚本路径

特殊字符

  • *:匹配所有可能的值(如分钟字段的 * 表示每分钟)
  • -:指定范围(如 1-5 表示1到5)
  • ,:指定列表(如 1,3,5 表示1、3、5)
  • /:指定步进值(如 */5 表示每5个单位,0-10/2 表示0到10之间每2个单位)

常用示例

表达式 说明
0 2 * * * /backup.sh 每天凌晨2点执行
*/5 * * * * /check.sh 每5分钟执行一次
0 9 * * 1 /weekly.sh 每周一上午9点执行
0 0 1 * * /monthly.sh 每月1号凌晨执行
0 12 * * 1-5 /workday.sh 工作日上午12点执行
0 0 * * 0 /weekly.sh 每周日凌晨执行

注意事项

  • 使用绝对路径:命令和脚本必须使用绝对路径,因为 cron 执行时的环境变量 PATH 可能不包含常用目录。例如使用 /usr/bin/python3 而不是 python3,使用 /home/user/script.sh 而不是 ./script.sh
  • 设置环境变量:如果命令依赖特定的环境变量,需要在 crontab 中显式设置。可以在命令前添加环境变量,例如:PATH=/usr/local/bin:/usr/bin:/bin0 2 * * * PATH=/usr/local/bin:$PATH /path/to/script.sh
  • 重定向输出:建议将输出重定向到日志文件,便于排查问题。例如:0 2 * * * /backup.sh >> /var/log/backup.log 2>&1>> 表示追加,2>&1 表示将错误输出也重定向到同一文件)。
  • 处理路径中的空格:如果路径或命令中包含空格,必须用引号括起来。例如:0 2 * * * "/path/to/my script.sh"0 2 * * * /usr/bin/python3 "/home/user/my script.py"
  • 脚本执行权限:确保脚本文件具有执行权限(chmod +x script.sh)。如果使用解释器执行,可以写成 /bin/bash /path/to/script.sh/usr/bin/python3 /path/to/script.py
  • 工作目录:cron 执行时的工作目录通常是用户主目录,如果脚本依赖特定目录,需要在命令中切换目录或使用绝对路径。例如:0 2 * * * cd /path/to/work && ./script.sh
  • 避免交互式命令:cron 执行时没有终端,无法进行交互。避免使用需要用户输入的命令,或使用非交互式选项(如 apt-get install -y)。
  • 时间同步:确保系统时间准确,cron 依赖系统时钟。建议使用 NTP 服务同步时间。
  • 测试命令:在添加到 crontab 之前,先在命令行手动测试命令是否能正常执行,确保路径和权限都正确。
  • 日志记录:对于重要任务,建议同时记录成功和失败的日志,便于监控和排查。例如:0 2 * * * /backup.sh >> /var/log/backup.log 2>&1 || echo "$(date): Backup failed" >> /var/log/backup.error.log