開発環境にcron(Windowsの場合、タスクスケジューラ)をいれていませんでした
メンバーからどうしたらいいのと聞かれたので答えた
(メンバーのレベルは3年目なのでlinux初心者です)
前提
centos 6.7です
インストールとサービスの設定
開発サーバーにログインして下記のコマンドを
インストールしてください
# 時間ぴったりのcronのインストール yum -y install cronie-noanacron # 時間の秒の部分が若干ぶれるのcronはアンインストール yum -y remove cronie-anacron # サービスを開始する(stopはエラーになっても問題なし) service crond restart # 再起動時に自動でサービスを起動する chkconfig crond on
インストールが終わったら
下記のコマンドが通るはずです
crontab -e
初期設定は以下のとおりです
#引用:http://www.creatology.jp/unix/outin.html SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
の部分が通常のrootと微妙にちがう可能性があります
超ーーーーーー重要な事
crontab -r
というコマンドは絶対に打たないでください
設定が全部消えます
「r」と「e」はキーボードでは隣同士で危険です
なので
1回目の保存以外は
下記のコマンドを実行してください
vi /var/spool/cron/root
(作業おこなう前にはバックアップしてください)
#本番 */1 * * * * CI_ENV=production php /var/www/html/xxxxproduction/public/index.php system gamedata create_gamedata #テスト 0 * * * * CI_ENV=testing php /var/www/html/xxxxtesting/public/index.php system gamedata create_gamedata
「CI_ENV=production」は環境変数です
本番は1分に一回実行する
テストは1時間に1回0分の時に実行する
実行された場合は
/var/log/cronにログが出力されます
しかしこのログは実行されたよっていう事しかわかりません
実行しているけど、動きがおかしいとか
どうしてもわからない場合は標準出力を指定してください
0 * * * * CI_ENV=testing php /var/www/html/xxxxtesting/public/index.php system gamedata create_gamedata >>/tmp/analog.log 2>>/tmp/analog-err.log
エラーログが出力されるのでそこからエラーの調査ができます
補足
標準出力とは
http://www.creatology.jp/unix/outin.html
viとは
http://www14.plala.or.jp/campus-note/vine_linux/operation/vi.html