python - Cron 作业无法运行从控制台完美运行的 bash 脚本(需要 xsession 的 shell python 脚本)

标签 python bash cron qtwebkit dryscrape

我正在使用dryscrape在 python 脚本中。 python 脚本在 bash 脚本中调用,由 cron 运行。对于那些可能不知道的人来说,dryscrape 是一个 headless 浏览器(在后台使用 QtWebkit - 因此需要 xsession)。

以下是我遇到的问题的要点

  1. 当我从命令行运行 python 脚本时,它可以工作
  2. 当我从命令行运行 bash 脚本时,它也可以工作

我发现这可能与我的命令提示符和 cron 作业运行时的不同环境有关,因此我修改了 bash 脚本以获取我的 .profile,如下所示:

#/bin/bash

. /full/path/to/my/home/directory/.profile

python script_to_run.py

这就是我的 cronjob crontab 条目的样子:

0,55 14-22 * * 1-5 /path/to/script.sh >> $(date "+/path/to/logs/\%Y\%m\%d.mydownload.log" )

顺便说一句,我知道作业正在运行(我可以在/var/log/syslog 中看到条目,并且脚本还会写入日志文件 - 这是我收到下面错误消息的地方):

在所有情况下,我都收到以下错误消息:

Could not connect to X server. Try calling dryscrape.start_xvfb() before creating a session

我已经在我的机器上安装了先决条件(显然 - 因为它在命令行运行)。目前,我已经没有想法了。

是什么导致脚本在控制台上运行良好,但在 cron 运行时失败?

[[相关详情]]

  • 操作系统:Linux 16.0.4 LTS
  • bash:版本 4.3.46(1)
  • cron 用户:我自己(即命令提示符处的同一用户)
  • dryscrape:版本 1.0.1

最佳答案

解决方案是在启动 dryscrape session 之前调用 dryscrape.start_xvfb() 方法。

关于python - Cron 作业无法运行从控制台完美运行的 bash 脚本(需要 xsession 的 shell python 脚本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41897358/

相关文章:

cron - 我的 cron 作业不工作

python - 无法从 read_csv 索引 Pandas 数据框中的日期

python - mypy 可以检查文档字符串吗?

Python 正则表达式 : remove certain HTML tags and the contents in them

linux - 当我以标准用户身份运行它时,我可以将 lshw 警告通过管道传输到/dev/null 吗?

php - bash.sh 运行 cron 的权限被拒绝

python - 获取父类名称?

bash - 为什么我得到 "syntax error near unexpected token ` (' "?

bash - 如何从命令行解析rdf格式文件

django - celery 击败: crontab executed same task TWICE (interval 10min)