2

我的操作系统是 Ubuntu 12.04

我正在尝试从 cron 选项卡执行 shell 脚本 ..

该shell脚本工作正常..当我直接在命令行中执行时..就像

sh out.sh

它工作正常..但是当我为这个 shell 脚本设置 cron 时它不起作用

我的 shell 脚本:out.sh:

#!/bin/bash
firefox "http://localhost/acceptance/selenium-main/shell.php"

它将在 Firefox 浏览器中打开该 shell.php 网页......直接从 CLI 执行时它工作正常

..我是这样的设置 cron 工作

sudo crontab -e

然后

23 13 * * * bash /usr/share/nginx/www/acceptance/selenium-main/out.sh

这不起作用..

我什至试过

33 13 * * * /usr/share/nginx/www/acceptance/selenium-main/out.sh

这也不起作用..

即使我也厌倦了从 bin 执行:/usr/local/bin/out.sh

这些方法都不起作用

请建议如何解决这个问题..因为 crontab 没有执行 shell 脚本..

4

5 回答 5

2

尝试使用绝对路径:

23 13 * * * /bin/bash /usr/share/nginx/www/acceptance/selenium-main/out.sh

如果出现问题,也可以尝试在登录模式下运行 bash。

23 13 * * * /bin/bash -l /usr/share/nginx/www/acceptance/selenium-main/out.sh

那将尝试修复其他变量,例如 PATH。如果没有,请尝试在脚本中显式设置它,或者在任何地方都使用绝对路径。

于 2013-08-29T08:40:33.297 回答
0

尝试在 shell 脚本中添加到 firefox 行的相同解决方案 konsolebox。也许Firefox不在您的路径中

于 2013-08-29T08:41:22.757 回答
0

它看起来像配置 GUI 应用程序时 cron 的行为。尝试创建一个包装脚本,例如,

包装脚本

export DISPLAY=:0.0
xhost + 2>>/tmp/err.log
firefox "http://localhost/acceptance/selenium-main/shell.php" 2>>/tmp/err.log

将 cron 条目添加为,

33 13 * * * bash /path/to/wrapper_script.sh

于 2013-08-29T08:52:27.843 回答
0

怎么样

php /path_to_localhost/acceptance/selenium-main/shell.php

如果它只是生成报告并且没有用户交互,则只需运行脚本。您不需要浏览器来运行 php 脚本。

于 2013-12-18T11:17:53.937 回答
0

cron在命令行中运行和从命令行运行的最大区别在于,您的配置文件是为您的 shell 运行的,因此脚本所需的所有环境变量都已正确设置,但cron使用的是裸“无配置文件”shell。

尝试使用一个脚本来设置它需要的所有环境变量,然后再执行脚本所做的任何事情,因此它是“自包含的”。

于 2014-03-12T12:09:29.883 回答