web-dev-qa-db-ja.com

引数を使用したPHP Cronジョブの実行

PHPスクリプトを1日1回、php5を使用してubuntu 13.10サーバーで実行しようとしています。

このコマンドに対して、crontab -lで検証されたajentiコントロールパネルを介して、cronジョブをセットアップしています。

php /path/script.php site_id=2 table=clicks

私はそれを実行させようとしている間に時間を調整してきましたが、基本的には午前2時に実行したいと思います。

0 2 * * * 

スクリプトを直接実行しようとしましたが、/usr/bin/php/usr/bin/php5/、およびphpを使用して実行しましたが、syslog、またはApacheログまたはエラーファイル(トレースレベル8 )

午前2時に実行しようとしていたので、そのように設定しましたが、端末でdateを実行すると、現在の時刻が

2014年2月6日07:44:29 UTC 2014

私もcronジョブを実行しようとしましたが、何も実行されません。

何か案は? syslogのほかに、cronジョブのubuntuロギングがありますか?

また、それは引数を送信する適切な方法ですか?スクリプトは、Webベースのスクリプトとは異なる方法でそれらを受け入れる必要がありますか?

2
alpha1

まず、コマンドラインからコマンドが正しく機能することを確認します。

/usr/bin/env php /path/to/script.php arguments

次に、cronが実行されていることを検証します。

ps auxw | grep cron

のような行があるはずです(^鉱山のハイライト)

root      1537  0.0  0.0  19112   336 ?        Ss    2012   1:03 cron
^^^^                                                             ^^^^

cronが正しく実行されている場合、syslogから他のcronメッセージを確認します。

Sudo zgrep CRON /var/log/syslog*

デフォルトでは、さまざまなタスクがrootとして実行され、/etc/cron.daily/etc/cron.weeklyなどのフォルダーで構成されます。出力がない場合は、cronが正しく実行されていません。で再起動してみてください

Sudo /etc/init.d/cron restart

エラーメッセージの/var/log/syslogの内容を確認し、手順1に再度進みます


cronが正常に実行されている場合は、crontabにそのコマンドがあるユーザーのメールボックスのチェックに進みます。 USERNAMEを置き換えます。

Sudo -u USERNAME mail

またはSudo -u USERNAME less/var/mail/USERNAME

Cronコマンドの実行に失敗した場合、そこに電子メールを送信する必要があります。


phpだけでなく、/usr/bin/env php /path/to/script.phpをコマンドとして使用する必要があります。 /usr/bin/envは適切なphpバイナリを自動的に選択します。


引数については、いいえ、引数を個別に読む必要があります。これはこのサイトのトピックではありませんが、 このマニュアルページ をご覧ください。これらの引数は$argvから読み取ることができます。 Webサーバーを介して呼び出されるスクリプトと同じようには機能しません。

2
Olli