Php Cron未执行shell脚本。。但是在命令行工作
我的操作系统是Ubuntu 12.04 我正在尝试从cron选项卡执行shell脚本 这个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
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