プログラムを定期的に実行する場合、Cron(クーロン)というコマンドを使います。

Cronとは

Cron(クーロン)はUnix系のOSで定期実行するコマンドでCrontab(クーロンタブ、クロンタブ)にオプションを追加して定期実行の設定をします。

(0〜59)(0〜23) (1〜31) (1〜12) 曜日(0〜6)と細かく設定が可能。n分置きに繰り返し実行するなども簡単。

使う用途はいろいろありますが、定期バックアップ、ログの書き出し、APIからの定期データ取得、TwitterBotなど自作プログラムの実行など工夫次第でいろんなことができます。

Cronの定期実行

設定されているCronの確認は-lでできます。

[admin@hogehoge ~]$crontab -l

Cronの編集は-eオプションで可能。編集モードにすると1行に1コマンド記述でき、保存はテキストの保存同様「:wq」でできます。

[admin@hogehoge ~]$crontab -e

0 0 * * * /home/admin/hoge.sh
| | | | | _____________________
| | | | | |
| | | | | +------- 実行するコマンド
| | | | +-------------- 曜日(0-6) 日曜が0。
| | | +---------------- 月 (1-12) 
| | +------------------ 日 (1-31) 
| +-------------------- 時 (0-23) 
+---------------------- 分 (0-59) 

構文エラーがあった場合は、以下のようなエラーが表示されます。ミスが有った場合、再度編集モードに戻り修正して保存します。

[admin@hogehoge ~]$ crontab -e
crontab: installing new crontab
"/tmp/crontab.yyTEw4":4: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit? 

Cronで定期バックアップ

以下のページで作成したdropboxにバックアップをするシェルスクリプトを定期実行します。

さくらのVPSにはバックアップ機能はありませんので、データのバックアップを行う場合は自前で用意する必要があります。 MySQLなどデータベースを利用の場合はレプリケーションを行う

毎日10時に実行する場合は以下のような指定をします。

[admin@hogehoge ~]$ crontab -e

0 10 * * * /home/admin/backup.sh

5分おきに実行する場合は以下のような指定をします。

[admin@hogehoge ~]$ crontab -e

*/5 * * * * /home/admin/backup.sh

毎週水曜日の3時0分に実行する場合は以下のような指定をします。

[admin@hogehoge ~]$ crontab -e

0 3 * * 3 /home/admin/backup.sh

最後に

いかがでしたでしょうか。Cronを使いこなせるようになると出来ることの幅がかなり広がります。
簡単なシェルスクリプトならネットを調べると結構出てくるので是非チャレンジしてみてください。

Sponsor link
わからないときに便利なサイト

サーバーを設定していざWordPressを設定もしくはコーディングしてみたらよくわからないけど動かない(泣)そんな経験ありませんか?

「時は金なり」わからないことは詳しい人に聞くのが手っ取り早いんです。そんなときに便利なのが teratailです。無料で使用できるのでオススメですよ!

teratail 無料登録