为何我的 cron 作业不工作?

为何我的 cron 作业不工作?

这是我的 cron 任务:

*/10 * * * * export DISPLAY=:99  #this is to open a port by Xvfb
*/10 * * * * python Crawler.py   #this file will use a selenium to script the data through firefox browser. 

目前我正在使用 aws EC2 Ubuntu OS 来运行此作业。如果我通过终端手动输入此命令,它会运行良好。所有抓取结果都保存在正确的目录路径下。但是当我使用 cron 作业运行时,没有生成任何文件。我通过 /var/log/syslog 查看 cron 作业日志,它表明 cron 作业已经执行。那么导致该问题的原因是什么?

Oct 26 02:00:01 ip-172-31-28-165 CRON[6415]: (ubuntu) CMD (run_crawler)
Oct 26 02:17:01 ip-172-31-28-165 CRON[6422]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct 26 03:17:01 ip-172-31-28-165 CRON[6459]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct 26 04:00:01 ip-172-31-28-165 CRON[6473]: (ubuntu) CMD (run_crawler)
Oct 26 04:17:01 ip-172-31-28-165 CRON[6519]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct 26 05:17:01 ip-172-31-28-165 CRON[6549]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Oct 26 06:00:01 ip-172-31-28-165 CRON[6577]: (ubuntu) CMD (run_crawler)
Oct 26 06:17:01 ip-172-31-28-165 CRON[6763]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

答案1

抱歉,但这 2 个命令是分开执行的。

*/10 * * * * export DISPLAY=:99 

不知道

*/10 * * * * python Crawler.py 

如果“Crawler.py”需要 DISPLAY,则需要将第一个命令放入第二个命令中。

除此之外:最好在“python”和“Crawler.py”前面都包含路径。

我认为它需要是类似这样的东西......

*/10 * * * * DISPLAY:99 && /usr/bin/python /usr/bin/local/Crawler.py 

如果 python 在/usr/bin/并且你在 中编写脚本/usr/bin/local/

但还有更好的方法:

使用包装器。它是一个独立的包装器,您可以将其用作上下文管理器:

    from xvfbwrapper import Xvfb
    with Xvfb() as xvfb:
         # rest of your script goes here (start/stop etc)

相关内容