crontab:运行Python脚本时找不到命令

时间:2020-07-15 09:38:55

标签: python shell cron environment

我编写了一个Python脚本来备份mongoDB,当我直接在终端中测试运行时,它可以正常工作。

但是,尽管我直接在终端中运行脚本时,命令mongodump: command not found仍然可以正常工作,但cron却说了一个错误mongodump

crontab -e的内容:

* * * * * cd <path-to-script> && python3 script.py

2 个答案:

答案 0 :(得分:2)

查看了S3DEV提供的帖子。

将mongodump的完整env路径运行到python脚本中工作了。 要获取mongodump的完整路径,请在终端中:

which mongodump
>>/usr/local/bin/mongodump

就我而言,我在脚本中使用了os.system()。

os.system(/usr/local/bin/mongodump [commands])

代替

os.system(mongodump [commands])

答案 1 :(得分:1)

这是因为从cron启动的程序无法获得您的登录Shell使用的环境。特别是,PATH通常很小。从cron运行脚本的久经考验的方式是:

  • 始终使用crontab中脚本的绝对路径,例如/path/to/script
  • /path/to/script的开头设置并导出PATH以及所需的任何其他变量,例如与export PATH=$(/usr/bin/getconf PATH):/usr/local/bin

您可以使用以下方法测试是否可以在简化的环境中运行任何脚本

env -i HOME=$HOME /path/to/script

如果运行正常,就可以进行cron了。