crontabというコマンドを使って、定期的にPCに仕事をしてもらうようにする方法を紹介していきます。
crontabはUNIX系のコマンドでmacでつかうこともできるし、サーバ上で定期的にバッチを動かして働かせることができます。
PCに仕事をさせるのにぴったりなコマンドですね。では実際に使い方を見ていこうと思います。
今回はgit pullを自動実行して、常にローカルリポジトリを最新の状態に維持する方法を紹介していきます。
- crontabコマンドの注意
- crontabの記述
- シェルスクリプトへの記述
crontabコマンドの注意
crontabコマンドは基本的にオプションと組み合わせて実行します。が、注意点があるので一旦manで使い方を確認
-l Display the current crontab on standard output.
-r Remove the current crontab.
-e Edit the current crontab using the editor specified by the VISUAL or EDITOR environment vari-
ables. The specified editor must edit the file in place; any editor that unlinks the file and
recreates it cannot be used. After you exit from the editor, the modified crontab will be
installed automatically.
-lをつけることで、現在の現在の状態を見れて、
-rをつけることで、crontabの削除ができて、
-eをつけることで、編集ができるようになります。
crontabはログインしているユーザごとの作成が可能です。
[ここでむちゃくちゃ注意しないといけないのが、オプション-eと-rの違い
です。eとrはキーボードで隣の位置なので、間違えたら取り返しの付かないことになります。慣れないうちは必ずman crontabを使ってどっちだったか確認してから実行したほうがいいと思います。
crontabへの記述
crontabにはスケジュールと実行するコマンドを書いておきます。
今回はシェルスクリプトを書いて、それを実行させていきます。
スケジュール
分、時、日、月、曜日を指定することができます。
左からこの順番です。*だと指定なしとなり、 */2 とすると~おきの実行となります。
*/5 * * * *
これだと5分おき
0 23 * * *
これだと毎日23時
* */1 * * *
これだと1時間おきになります。
より詳しく書いていきたい場合はこの記事とかを参考にすればいいかなと思います
クーロン(cron)をさわってみるお - Qiita
コマンド
絶対パスを書いて上げて下さい。今回は/root以下にシェルスクリプトを書きます。
/root/gitpull.sh
これをスケジュールの横に書いてあげればおけです。
*/5 * * * * /root/gitpull.sh
crontabのeditがおわったら、再読込のため再起動しましょう。
service crond restart
シェルスクリプトへの記述
ではgitpull.shを書いていきます。
cd (git pullしたいプロジェクトのディレクトリに移動)
git fetch
git reset --hard origin/master
git merge origin/master
とりあえず基本の型のみです。
git fetch
git reset --hard origin/master
はリモートの最新の状態をorigin/masterにもってきています。
git mergeで最新の状態をmasterに反映させることで、ローカルのファイルに変更の適用をすることができます。
つまりはgit pullをしてるだけですね
こちらも参考にしてみて下さい
[社内新人向け]Gitで使ってほしくないコマンド - Qiita
以上です。5分おきに実行とかにしておけばgitの最新の状態が常に反映された状態になるかと。
便利ですね。