2011-10-22 3 views
10

例:引数を指定してcronジョブを実行し、結果をログに渡すにはどうすればよいですか?

* * * * * /usr/bin/php /full/path/to/script.php arg1 arg2 > /full/path/to/logfile.log 

スクリプトが実行され、うまく引数にアクセスしますが、結果はlogfile.logに印刷されることはありません。また、私のlogfile.logはchmod 777なので、書き込みアクセス権があることを知っています。

構文を修正できますか?

+1

ユーザーはフォルダへの書き込み権限を持っていますか? – mik

+0

はい、フォルダとファイル。別のログが同じディレクトリにあります。私は問題が議論にあったと思った。しかし、私の構文が正しければ、私はデバッグするためにもう少し詳しく調べていく必要があります。 – Ryan

+1

これは60秒ごとにログを上書きするので、 '* * * * *'を使うべきではないかもしれません。 '' ''を付けるとどうなるでしょうか? – Jens

答えて

11

間違ったフォルダのログファイルを検索しているようです。 /パス/に/スクリプトフォルダ内のログファイルを探しそして、この

* * * * * cd /path/to/script.php ; ./script.php arg1 arg2 >> logfile.log 

を試してみてください。 書き込み権限の問題でもあります。 また、スクリプトのエラーを確認してください。 あなたのcrontabコマンドはOKのようです。

+0

申し訳ありませんが、私の質問は完全にはっきりしていませんでした。私はいつもルートパスを使用してきました。私は明確にするために質問を更新しました。だからあなたはこれが正しいフォーマットだと言っているのですが、そうですか? – Ryan

+0

これでコマンドが正常になりました。書き込み権限の問題があるかもしれませんか?また、cd/path/to/scriptを試してみてください。 – mik

+0

@ rcode74:あなたの編集がコマンドを破った。私はそれをロールバックするつもりです。 'script.php' *を含むディレクトリに' cd'してからスクリプトを起動する必要があります。 '/ path/to/script.php'はリテラルではありません。スクリプトが格納されているディレクトリの名前を表します。 –

1

コマンドはコマンドラインから正しく機能しますか? 引数にシェルによって特別に扱われる文字が含まれている可能性があります。その場合、シェルが引数を変更するのを防ぐために、コマンド全体を引用する必要があります。

関連する問題