cron 环境变量是什么
cron 不读用户的 shell 配置:命令搜索路径极简、没有别名、语言环境变量也可能不同。在任务表顶部显式声明环境变量,是让任务稳定运行的第一道防线。最常声明的是命令搜索路径、登录解释器与通知邮箱,另有语言环境用于处理多字节文本。
基本信息
| 适用场景 | 让定时任务拥有可预期的执行环境 |
|---|---|
| 声明位置 | 任务表文件顶部,必须在任务行之前 |
| 常用变量 | 命令搜索路径、登录解释器、通知邮箱、家目录、语言环境 |
| 作用范围 | 只对当前任务表内的后续任务行生效 |
典型使用场景
- 脚本依赖非系统目录里的命令,需要明确搜索路径
- 输出需要按特定编码写入文件,避免中文乱码
- 希望任务失败时收到邮件通知,明确指定收件人
- 任务需要知道家目录,才能正确找到用户的配置文件
- 需要在任务里固定语言环境,保证排序与比较结果一致
任务表顶部声明
任务表顶部声明
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/bash
MAILTO=ops@example.com
LANG=en_US.UTF-8
0 2 * * * /opt/app/backup.sh >> /var/log/backup.log 2>&1常用变量
| 变量 | 作用 | 要点 |
|---|---|---|
| 命令搜索路径 | 决定能找到哪些命令 | 建议显式声明完整路径 |
| 登录解释器 | 决定用哪个 shell 执行任务 | 与交互环境可能不同 |
| 通知邮箱 | 任务输出的投递目标 | 地址不可达时输出会被丢弃 |
| 家目录 | 用户配置文件所在位置 | 影响依赖家目录的脚本 |
| 语言环境 | 字符处理与排序规则 | 影响多字节文本与比较结果 |
任务里用到的命令建议写绝对路径:服务化账号的执行环境与登录 shell 差异更大,直接依赖搜索路径很容易失败。
通知邮箱指向不可达的邮件系统时,任务输出会堆积在本地邮箱文件里或被静默丢弃;把所有输出统一重定向到日志文件更可靠,也便于事后排查。