首页/系统/Linux 运维命令速查/场景:cron 报 command not found 排查
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条进程与作业69 条磁盘与文件系统51 条用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条
定时任务与计划50 条

场景:cron 报 command not found 排查

脚本手动正常、cron 执行失败,九成是 PATH 与登录环境差异;给定位步骤与三种兜底写法。

Linux 运维命令速查系统更新于 2026-10-12
场景脚本手动可跑,cron 报命令找不到
根因cron PATH 极简且不读 profile
修复声明 PATH / 绝对路径 / 专用 env 文件

复现与定位

复现与定位
# 临时加一条,观察 cron 真实环境(用完删除)
* * * * * env > /tmp/cron-env.txt
cat /tmp/cron-env.txt

# 守护日志里确认报错
journalctl -u crond -n 20 --no-pager | tail
grep CRON /var/log/syslog | tail -n 10

三种修复

三种修复
# ① crontab 顶部声明
PATH=/usr/local/bin:/usr/bin:/bin

# ② 任务里用绝对路径
0 2 * * * /usr/bin/python3 /opt/app/job.py

# ③ 脚本内加载专用环境
. /etc/app/env.sh
/opt/app/run.sh
java/node 等运行时同样查绝对路径;多版本环境下先 which -a 出真实路径再写进任务。

易错点

  • source /etc/profile 在非交互环境可能提前退出(脚本含交互判断),加 || true 或改专用 env 文件
  • 不要把 PATH 一路加宽了事:定位真因(版本/路径)比盲目扩 PATH 安全

数据来源与参考

  • man 5 crontab(environment)
  • RHEL 文档:cron 环境常见问题

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌