[[さくらのVPS]]
CentOSでcronを使う方法
#contents
* cronとは? [#d3707b42]
[[crontab - WikiPedia>http://ja.wikipedia.org/wiki/Crontab]]
>crontab(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系OSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。この記録を元に定時になると、その命令内容を読み取り、実行が行われる。
一般にcrontabコマンドで編集されたスケジュール内容は、crondデーモンにより実行される。crondはバックグラウンドで稼動し、毎分ごとに実行すべきスケジュールがないか確認し、もし実行すべきジョブがあれば、それを実行する。このジョブは「cron job」とも呼ばれる。
[[cronの設定・実行 | Linuxで自宅サーバ構築>http://linuxserver.jp/Linux/cron%E8%A8%AD%E5%AE%9A.php]]
>cronとは、決められた時刻にコマンドを定期的に実行させるためのデーモンプロセスです。
cronではコマンドだけにとどまらず、シェルスクリプトや、PerlやPHPなどのインタープリタ言語で書かれたプログラムも動作させることができます。
* crontabの設定 [#v51421ab]
** crondの動作確認 [#m6846d13]
crondが起動しているか確認
# /etc/rc.d/init.d/crond status
crond (pid 2559) を実行中...
さくらのVPSでは、デフォルトのゲストOS(CentOS 5.5)だと、最初からcrontabが使える。
[[さくらのVPS OSセットアップ情報 起動デーモン>http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml#2]]
>初期出荷時に自動起動設定(稼働中)のデーモン
crond 定期的にジョブを実行するためのcronサービス
/etc/init.d/crond {start|stop|status|reload|restart|condrestart}
* PHPスクリプトの定期実行 [#u22044bb]
(参考)[[cronの設定(さくらVPS)>http://blog.okumin.com/archives/2011-04-05]]
>まずphpのパスを調べておきます。
# which php
/usr/bin/php
>var/aaa/b.phpというファイルを毎週木曜日14時30分に実行するとします。
この場合、crontabへの記入は下記のようになります。
# vi /etc/crontab
で直接編集しました。
30 14 * * 4 root /usr/bin/php /var/aaa/b.php
>30 14 * * 4の部分はcronの実行時刻です。
左から
分 時 日 月 曜日の順に半角スペースで区切って入力していきます。
特に指定する必要のない項目は*を使用します。
今回の条件だと、木曜日の場合は日にちや月に関係なく作動させたいので、それらを*としておきます。
毎時間実行したい場合は、
30 * * * *
のように分だけ指定すれば1時間ごとに作動します。
月日時分は一般的な数字の記入で構わないのですが、曜日だけは若干独特です。
それぞれの曜日が
日=0 月=1 火=2 水=3 木=4 金=5 土=6
の数字に対応しています。
今回は木曜日に実行したいので、4を入力します。
30 14 * * 4
これで時間の設定は完了です。
>次に実行するユーザーを指定します。
とりあえずrootで。
30 14 * * 4 root
そして次に、最初に調べておいたphpのパスを入力。
30 14 * * 4 root /usr/bin/php
最後に実行するコマンドのパスを入力しておしまいです。
30 14 * * 4 root /usr/bin/php /var/aaa/b.php
これで毎週木曜日14時30分に/var/aaa/b.phpが自動で実行されます。
とても便利ですね。
- wgetでPHPスクリプトにアクセスして実行させるアイデア
[[コマンドラインからのPHP実行>http://centossrv.com/bbshtml/webpatio/2187.shtml]]
>目的のphpスクリプトへwgetするようにcronに記述するといいです。
出力は不用なので /dev/null へ破棄するとか。