0

5分ごとにPHPスクリプトを実行するcronジョブがあります。PHPスクリプトは、スクリプトの最後に2つのbashコマンドを実行します。追加するログファイルが原因でスクリプトが実行されていることはわかっています。Ubuntu Gnomeターミナルを介してPHPスクリプトを手動で実行すると、両方のbashコマンドが問題なく実行されます。ただし、PHPスクリプトがcronを介してトリガーされる場合、2つのbashコマンドは実行されません。何か案は?

$command = 'notify-send "' . count($infoleakPosts) . '  New Posts."';
`$command`;

$command = 'firefox http://example.com';
`$command`;

*/1 * * * * php /home/andrew/grab.php USERNAME PASSWORD # JOB_ID_1
4

3 に答える 3

2

通常、cronスクリプトは別のユーザーアカウントで実行され、おそらく別の環境パスが設定されています。

コマンドへのフルパスを使用するようにコマンドラインを設定してみてください。/path/to/notify-send "x New Posts"

which notify-send通常の端末から使用して、スクリプトに挿入するパスを取得できます。

コマンドからの出力を取得して、デバッグに役立てることもできます。バッククォート演算子を使用すると出力が返されるため、変数に割り当てたり、ダンプしたりできます。

$output = `$command`;
error_log($output);
于 2010-05-01T01:55:31.317 に答える
1

cronでスクリプトを実行している場合、出力ttyまたはX-windowsDISPLAYenv-varはありません。コマンドは実行されているが失敗していると思われます。

于 2010-05-01T01:52:12.753 に答える
0

cronに関する上記の回答へのコメント:cronは、crontabを使用しているユーザーとしてコマンドを実行します。したがって、crontabを設定すると、コマンドが実行されます。ログイン時に取得するものとは少し異なるシェル起動スクリプトのセットを実行します。ttyがないことを認識しているため、プロファイルファイルのセットではなく〜/.bashrcファイルのみを実行します。詳細については、cronとbashのマニュアルページを確認してください

于 2010-05-01T02:27:36.887 に答える