Cron作业可以';t运行从控制台运行良好的bash脚本(它炮制需要xsession的python脚本)
我正在python脚本中使用。python脚本在bash脚本中调用,该脚本由cron运行。对于那些可能不知道的人来说,DrySrape是一款无头浏览器(在后台使用QtWebkit,因此需要xsession) 以下是关于我正在讨论的问题的要点Cron作业可以';t运行从控制台运行良好的bash脚本(它炮制需要xsession的python脚本),python,bash,cron,qtwebkit,dryscrape,Python,Bash,Cron,Qtwebkit,Dryscrape,我正在python脚本中使用。python脚本在bash脚本中调用,该脚本由cron运行。对于那些可能不知道的人来说,DrySrape是一款无头浏览器(在后台使用QtWebkit,因此需要xsession) 以下是关于我正在讨论的问题的要点 当我从命令行运行python脚本时,它可以工作 当我从命令行运行bash脚本时,它也可以工作 我发现这可能与命令提示符和cron作业运行时的不同环境有关,因此我修改了bash脚本以获得.profile,如下所示: #/bin/bash . /full/pa
#/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中看到条目,脚本也会写入日志文件,在这里我会得到下面的错误消息):
在所有情况下,我都会收到以下错误消息:
无法连接到X服务器。尝试调用drysrape.start_xvfb()
在创建会话之前
我已经在我的机器上安装了前提条件(显然,因为它是在命令行上运行的)。目前,我已经没有主意了
是什么导致脚本在控制台正常运行,然后在由cron运行时失败
[[相关详细信息]]
- 操作系统:Linux 16.0.4 LTS
- bash:Version4.3.46(1)
- cron用户:我自己(即命令提示符下的同一用户)
- 干刮:版本1.0.1
最好的测试方法是在不显示的情况下使用ssh连接到机器中,并检查您是否可以从那里无错误地运行它。解决方案是在启动DrySrape会话之前调用
DrySrape.start\xvfb()
方法。cronjob是否设置Display
变量(或者您是.profile
这样做的)不,我不这么认为。请详细说明。。。这听起来像是我之前在一个类似项目中遇到的问题。在运行命令之前,是否需要在我的crontab条目中添加export DISPLAY=:0
?是否可以从不在X windows会话中的终端运行该命令?(按ctrl+alt+1、ctrl+alt+6或ctrl+alt+7返回xwindows)。可能是DrySrape需要一个xsession)。您确定正在执行python脚本吗?在cronjobs中,您不能期望任何类型的环境可用,因此建议使用完整路径everyhare。@fedorqui是的,python脚本肯定正在运行(它将我在问题中指定的错误写入日志文件),请参阅上面的注释。这可能有助于你进一步澄清情况。