プログラムを定期的に実行する場合、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のデータを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を使いこなせるようになると出来ることの幅がかなり広がります。
簡単なシェルスクリプトならネットを調べると結構出てくるので是非チャレンジしてみてください。