目的
・1日に1回とかの定期実行を行いたい
・実行時に、GithubにもPUSHを行いたい
環境
OS : CentOS 6.7
構築方法
Crontabの導入方法
以下のコマンドを実行して、crontabをインストール
yum install crontab
以下のコマンドを実行して、Crontabの内容を編集する
crontab -e
vimと同じ操作になる。"a"や"i"を入力してインサートモードにする。
定期実行する時間+処理内容を1行で記述する。
1/* * * * * echo `date` >> out
上記書き方だと、1分ごとに、時刻をoutに出力することになる。
ちなみに、実行時は、ユーザーのホームディレクトリから実行されることになるので、ユーザーのホームディレクトリのoutが作成され、出力されていくはずである。
Githubへの定期PUSHの実行のシェルスクリプトの書き方
Crontab -eの中に直接書いてしまっても構わないが、あまり美しくない。
このため、シェルスクリプトを用いてGithubと連携することを考える。
すでにGithubにSSH接続等によりログイン情報を要求されない状態が構築されているものとする。
#!/bin/sh
cd /**/**/full path/ ; git add -A ; git commit -m "Git Push Agent by crontab " ; git push ;
上記のように、一連のコマンドを全て";"でつなぎ、1行で書く必要がある。
なぜかというと、各コマンド実行ごとにホームディレクトリに戻ってしまうため。
フルパスで実行出来る場合は、別行でも構わないが、ディレクトリ場所が必要なものは、全て1行で構成されるシェルスクリプトを用意する必要がある。