Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Cron未执行shell脚本。。但是在命令行工作_Php_Bash_Shell_Cron_Ubuntu 12.04 - Fatal编程技术网

Php Cron未执行shell脚本。。但是在命令行工作

Php Cron未执行shell脚本。。但是在命令行工作,php,bash,shell,cron,ubuntu-12.04,Php,Bash,Shell,Cron,Ubuntu 12.04,我的操作系统是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网页。。。它在直接从CL

我的操作系统是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
然后

这不管用

我甚至试过

33 13 * * * /usr/share/nginx/www/acceptance/selenium-main/out.sh
这也不起作用

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

这些方法都不起作用


请建议如何解决此问题。。因为crontab不执行shell脚本

尝试使用绝对路径:

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。如果没有,请尝试在脚本中显式设置,或者在任何地方都使用绝对路径。

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

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

包装器\u脚本

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

怎么样

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

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

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


在执行脚本之前,请尝试使用一个脚本,该脚本设置了它所需的所有环境变量,因此它是“自包含的”。

感谢您的建议。。我尝试了所有的方法。。但对我来说什么都不管用。。甚至我在我的工作站上尝试了其他系统。。它不起作用…我尝试了一个对我有效的解决方案。谢谢你的建议。。我尝试了所有的方法。。但对我来说什么都不管用。。甚至我在我的工作站上尝试了其他系统。。它对我不起作用。@user2728390您是否执行了包装器脚本并手动检查?如果是,错误是什么?你在用SSH吗?如果是这样,它有不同的过程。没有SSH。。我只是在用Ubuntu桌面。。。这里是我手动进入终端时的输出:adi@zest-系统产品名称:/usr/share/nginx/www/acceptance/selenium main$sh out.sh访问控制已禁用,客户端可以从任何主机连接。。但是当手动执行时。。。脚本运行良好。。我不知道为什么cron不工作。根据更新后的答案,将错误重定向到/tmp/err.log,并在使用cron运行时提供日志。另外,在Ubuntu桌面上打开终端时,
echo$DISPLAY
的值是多少?你看起来就像是编程科学家。。。真是太好了。。它现在对我有用。。非常感谢你。。我有一个疑问..我的shell脚本将在firefox中执行一个php文件。。此php将生成一个报告。。可以关闭此firefox窗口。。在此php文件执行之后。。。
php /path_to_localhost/acceptance/selenium-main/shell.php