さくらのVPSに、cronの設定をしてみます。
結構はまったので、作業した内容を全部メモしときます。
設定内容:
設定した時刻にファイルを時刻のファイル名でコピーします。
1)実行ファイルを作成します
cron-set.php<?php $date = date('Ymd-H'); //時刻取得 $evntid = array ('460','20101118'); //ディレクトリID設定 $DirRoot = '/var/www/data/'; //pathを指定 //各ディレクトリにファイルをコピーします foreach($evntid as $k => $v){ $tmpData = $DirRoot. $v. '/'. $v. '.txt'; copy( $tmpData, $DirRoot. $v. '/'. $date. '_cp.txt'); } echo 'copy OK'; ?>/var/www/data/ ※パーミッションは【777】
の直下にcron-set.phpのファイルをおいて
/var/www/data/460/ ※パーミッションは【777】
の直下に460.txtをおきます。
/var/www/data/20101118/ ※パーミッションは【777】
の直下にも20101118.txtをおきます。
2)crontabに設定します
一応phpのパスを調べます。まずphpのパスを調べておきます
which php /usr/bin/php
crontabを編集します
crontab は、cron を実行するための情報が書かれています。
sudo vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 23 * * * * root run-parts /etc/cron.hourly 24 3 * * * root run-parts /etc/cron.daily 44 3 * * 0 root run-parts /etc/cron.weekly 04 4 1 * * root run-parts /etc/cron.monthly #以下の記述を追加します 40 14 * * 5 root /usr/bin/php /var/www/data/cron-set.php金曜日の14時40分にcron-set.phpを実行するように指定しています。
* * * * *は
左から、
「分」 0~59
「時」0~23
「日」1~31
「月」1~12 or jan~dec
「曜日」0~7 [0,7は日曜日] or sun~sat
※日=0 月=1 火=2 水=3 木=4 金=5 土=6
になります。
実行ユーザーを「root」にし、
phpのパス「/usr/bin/php」を入力し、
「/var/www/data/cron-set.php」実行するコマンドのパスを入力しておしまいです。
ログを確認するには
sudo view /var/log/cron
設定した時刻になると、「460」「20101118」の直下にコピーファイルができました!!
以上です。
中々うまく動かなくて、php.iniのdate.timezoneの設定までしたりしてました。。。
あんまり関係なかったぽいですけど。。。
⇒ さくらのVPSを使ってみる【7】独自ドメインの設定をしてみる
Undenniably believe that which you said. Your favorite
justification seemed to be on the net the easiest thing to be aware
of. I say to you, I definitely get annoyed while people consider worries that they plaainly don’t know about.
Youu managed to hit the nail upon the top and defined out the
whole thing without having side-effects , people can take a signal.
Will likely be bback to get more. Thanks