Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@ynwa0826

【Linux】crontabコマンドでgit pullを定期実行しておく

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を書いていきます。

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 fetchとは - Qiita

[社内新人向け]Gitで使ってほしくないコマンド - Qiita

以上です。5分おきに実行とかにしておけばgitの最新の状態が常に反映された状態になるかと。
便利ですね。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What is going on with this article?