首页 > 解决方案 > shell脚本不会更改目录并执行python脚本

问题描述

所以我有一个文件success.sh

 python3 /home/ubuntu/foo.py

这在 Cron 中运行:

* * * * * /home/ubuntu/success.sh >> /tmp/cron_output

其中 foo.py 很简单

 print("DSVSDVDSVSDFDS")

但是,一旦我尝试运行我真正想要运行的内容并将success.sh更改为以下内容:

   cd "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/" && python3 "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-arbitrage-bot.py"

文件中没有记录输出...

我想知道它是否正在运行。为什么什么都没有输出??success.sh 作为独立运行良好...

编辑:

我已将我的 crontab 更改为以下内容:

  * * * * * /home/ubuntu/success.sh > /tmp/cron_output 2>&1

所以它输出错误。现在它显示在我的 py 脚本中找不到模块。

    Traceback (most recent call last):
    File "/home/ubuntu/Amazon to Ebay v1.7/Catalogue 2/ebay-price-    arbitrage-bot.py", line 23, in <module>
    from paypal import PayPalInterface
    ModuleNotFoundError: No module named 'paypal'

但它作为一个独立的工作正常,所以我不知道发生了什么。

标签: pythonubuntuchron

解决方案


Python 在当前目录和标准模块路径中查找模块。当您从 cron 运行时,该进程不在您的主目录中,因此需要添加路径。在 python 文件中执行:

import sys
sys.path.insert(0, "/path/to/your/paypal/module")

推荐阅读