2

私のOSはUbuntu 12.04です

cronタブからシェルスクリプトを実行しようとしています..

そのシェルスクリプトは正常に動作します..コマンドラインで直接実行しているとき..のように

sh out.sh

それは正常に動作します..しかし、このシェルスクリプトにcronを設定すると動作しません

私のシェルスクリプト: out.sh:

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

それはFirefoxブラウザでそのshell.php Webページを開きます... CLIから直接実行すると正常に動作します

..i このような設定の 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がシェルスクリプトを実行していないため..

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

The big difference between running something in cron and from the command line is that your profile is run for your shell, so all the environment variables needed by your script are set correctly, but cron uses a naked "profile-less" shell.

Try using a script that sets all the environment variables it needs before executing the whatever the script does, so its "self contained".

于 2014-03-12T12:09:29.883 に答える
0

GUIアプリケーションを構成するときのcronの動作のように見えます。次のようなラッパー スクリプトを作成してみてください。

wrapper_script :

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 に答える