从 cron 运行脚本时的环境变量不同于手动运行时,需要在脚本中指定完整路径或设置环境变量。
解决方案示例:
在脚本开头设置环境变量:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
或在使用命令时指定完整路径:
#!/bin/bash
/usr/bin/python3 /path/to/script.py
另外,也可以在 cron 中设置环境变量,将系统环境变量复制到 cron 环境中,保持一致性:
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# * * * * * command to be executed
注意:不同的 Linux 发行版 cron 环境可能会有些许区别,具体可以参考官方文档。