【问题标题】:Cron job calling bash script and python scriptsCron 作业调用 bash 脚本和 python 脚本
【发布时间】:2011-08-15 15:19:37
【问题描述】:

好的,所以我有一个简单地下载网页的 bash 脚本,然后我使用 python 从下载的页面中提取一些数据。 所以我的 bash 脚本是这样的

#!/bin/bash
html_file="web_page.html"
wget -O /home/michael/Documents/CS288/homework7/web_page.html http://markets.usatoday.com/custom/usatoday-com/html-mktscreener.asp?exchange=13\&screen=1
python hw_7_2.py $html_file

现在,当我从命令行执行此 bash 脚本时,它运行良好,wget 运行,然后我的 python 脚本执行,但是当我将其设置为 cron 作业时,wget 将运行但 python 脚本从不执行. 我还没有真正设置 cron 作业,所以我认为这可能是问题所在。这基本上就是我的 crontab 文件的样子

SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
 * * * * * michael /home/michael/Documents/CS288/homework7/usatoday_runner.sh

【问题讨论】:

  • 虽然显然不是问题,但设置$html_file 然后不将其用于wget 的输出是一种很好的方式来解决自己的问题。
  • 如果您使用 Debian,请不要忘记注意 cronjob 的文件名,如 here 所述。

标签: python linux bash crontab


【解决方案1】:

尝试将 cron 行替换为:

* * * * * michael /home/michael/Documents/CS288/homework7/usatoday_runner.sh > /tmp/why_is_this_failing.log 2>&1

答案可能在 /tmp/why_is_this_failing.log 中

【讨论】:

  • 感谢 Cedric,错误日志提供了帮助,就像其他人所说的,当 python 脚本尝试执行时,我只想在正确的目录中
【解决方案2】:

您的脚本可能没有设置一些环境变量。当 cron 作业运行时,它没有您的正常配置文件信息 - 它不会加载您的 .profile/.bashprofile(更简单的路径、JAVA_HOME 等),一种可能的选择是让脚本来源您的 .profile 等。

【讨论】:

    【解决方案3】:

    由于$PATH/working 目录的各种问题,Cron 经常失败。您正在设置 $PATH,但如果您的 bash 脚本和 python 脚本都无法工作,如果您不在正确的目录中,我不会感到惊讶。

    尝试使用更多绝对路径,看看是否可以解决问题。同样,尝试从/ 或其他地方自己运行您的 cron 命令,看看它是否适合您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多