← 全部文章

技术与生活 / 一篇记录

终端能跑,定时任务却失败

交互式 Shell 常常加载额外的 PATH、别名和环境变量,计划任务通常没有相同条件。相对路径、默认解释器和未传入的凭据,都可能成为差异来源。

交互终端中能运行的命令,在 cron 中可能因为 PATH 或工作目录不同而失败。

实际怎么检查

这是一条运维检查思路,具体阈值与工具要结合服务规模和实际部署环境选择。

command -v python3; pwd

在任务中明确解释器、工作目录与日志路径。

遇到异常再检查什么

在任务入口记录工作目录与必要工具路径,但不要输出秘密变量。使用明确的可执行文件路径,并将标准错误写到受限日志,能明显缩短排查过程。

计划任务失败时还要检查运行身份。交互用户能够读取的文件,不一定能被服务用户读取。用最小必要权限设计输入输出路径,比把所有目录统一放开更容易维护。

不要依赖只在个人 Shell 配置文件中设置的变量。

参考:运维 文档。

搜索文章

输入关键词,找回一篇记录。