LoginSignup
9
10

More than 5 years have passed since last update.

git と Makefile で cron の管理

Last updated at Posted at 2013-05-23

ユーザ別の設定

Makefile
TARGET_FILES = *.cron
CRON_FILE = crontab

all: file

.PHONY: file
file: ${TARGET_FILES}
    echo "PATH=/usr/local/bin:/usr/bin:/bin" > ${CRON_FILE}
    echo "CONTENT_TYPE=text/plain; charset=UTF-8" >> ${CRON_FILE}
    echo "" >> ${CRON_FILE}
    cat ${TARGET_FILES} >> ${CRON_FILE}
    echo "" >> ${CRON_FILE}
    crontab ${CRON_FILE}

01_config.cron
####################
# config
####################

HOGE_DIR=/home/vagrant/project/hoge
HOGE_ENV=dev

FUGA_DIR=/home/vagrant/project/fuga
FUGA_ENV=dev

プロジェクト別のcron設定ファイル

git によりバージョン管理されている前提です。

hoge.cron
####################
# hoge
####################

31 * * * *  [ "$HOGE_ENV" = "prod" ] && php $HOGE_DIR/symfony hoge:task1 --env="$HOGE_ENV"
10 4 * * *  php $HOGE_DIR/symfony hoge:task2 --env="$HOGE_ENV"

fuga.cron
####################
# fuga
####################

22 10,22 * * *  [ "$FUGA_ENV" = "prod" ] && php $FUGA_DIR/symfony hoge:task1 --env="$FUGA_ENV"
10,50 * * * *  php $FUGA_DIR/symfony hoge:task2 --env="$FUGA_ENV"

使い方

$ pwd
/home/vagrant/.crontab.d
$ ls -l      
合計 12
-rw-rw-r-- 1 vagrant vagrant 152  5月 22 22:50 2013 01_config.cron
lrwxrwxrwx 1 vagrant vagrant  43  5月 22 22:58 2013 10_hoge.cron -> /home/vagrant/project/hoge/config/hoge.cron
lrwxrwxrwx 1 vagrant vagrant  43  5月 22 22:59 2013 20_fuga.cron -> /home/vagrant/project/fuga/config/fuga.cron
-rw-r--r-- 1 vagrant vagrant 318  5月 22 23:02 2013 Makefile
$ make
echo "PATH=/usr/local/bin:/usr/bin:/bin" > crontab
echo "CONTENT_TYPE=text/plain; charset=UTF-8" >> crontab
echo "" >> crontab
cat *.cron >> crontab
echo "" >> crontab
crontab crontab
$ crontab -l
PATH=/usr/local/bin:/usr/bin:/bin
CONTENT_TYPE=text/plain; charset=UTF-8

####################
# config
####################

HOGE_DIR=/home/vagrant/project/hoge
HOGE_ENV=dev

FUGA_DIR=/home/vagrant/project/fuga
FUGA_ENV=dev

####################
# hoge
####################

31 * * * *  [ "$HOGE_ENV" = "prod" ] && php $HOGE_DIR/symfony hoge:task1 --env="$HOGE_ENV"
10 4 * * *  php $HOGE_DIR/symfony hoge:task2 --env="$HOGE_ENV"

####################
# fuga
####################

22 10,22 * * *  [ "$FUGA_ENV" = "prod" ] && php $FUGA_DIR/symfony hoge:task1 --env="$FUGA_ENV"
10,50 * * * *  php $FUGA_DIR/symfony hoge:task2 --env="$FUGA_ENV"
9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10