我编写了一个Python脚本来备份mongoDB,当我直接在终端中测试运行时,它可以正常工作。
但是,尽管我直接在终端中运行脚本时,命令mongodump: command not found
仍然可以正常工作,但cron却说了一个错误mongodump
。
crontab -e
的内容:
* * * * * cd <path-to-script> && python3 script.py
答案 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运行脚本的久经考验的方式是:
/path/to/script
。/path/to/script
的开头设置并导出PATH
以及所需的任何其他变量,例如与export PATH=$(/usr/bin/getconf PATH):/usr/local/bin
您可以使用以下方法测试是否可以在简化的环境中运行任何脚本
env -i HOME=$HOME /path/to/script
如果运行正常,就可以进行cron了。