Macでcronの使い方を学ぶ
最近ジョブ管理の自動化やバージョン管理をもっと導入して快適なプログラミング生活を送りたい、いや送らねばならないと感じています。そこでジョブ管理の自動化の勉強を兼ねてターミナルコマンドのcron
の勉強をしたいと思います。
参考図書 Software Design 2014年12月号 | Hinemasで学ぶジョブ管理超入門
Software Design (ソフトウェア デザイン) 2014年 12月号 [雑誌]
- 出版社/メーカー: 技術評論社
- 発売日: 2014/11/18
- メディア: 雑誌
- この商品を含むブログ (4件) を見る
Macの初期設定
crontabを使ってcronの設定をいじっていくのですがデフォルトのエディターはvimとなっています。 vimのバックアップファイルが悪さをしてcronが上手く動かないので以下の設定を.vimrcに追加します。
set backupskip=/tmp/*,/private/tmp/*
homebrewでインストールしたmacvimを使いたいためログインシェルの設定ファイルに以下の設定を追加します。
export EDITOR=/usr/local/bin/vim
一般的なRedhadでのディレクトリ構造は以下のようになっているようなのでできるだけ、これを踏襲します。
ファイル名/ディレクトリ名 | 内容 |
---|---|
/etc/crontab | システム全体に関わるcrontabファイル |
/var/spool/cron/user | ユーザ個別のcrontabファイル(crontabコマンドで指定した時間やスクリプトがここに設定される) |
/etc/cron.hourly | 毎時実行したいシェルスクリプトを配置するディレクトリ |
/etc/cron.daily | 毎日実行したいシェルスクリプトを配置するディレクトリ |
/etc/cron.weekly | 毎週実行したいシェルスクリプトを配置するディレクトリ |
/etc/cron.monthly | 毎月実行したいシェルスクリプトを配置するディレクトリ |
/etc/cron.d | 上記以外に実行したいシェルスクリプトを配置するディレクトリ |
実行方法
コマンド | 内容 |
---|---|
crontab -e | #設定ファイル編集 |
crontab -l | #設定ファイル表示 |
crontab -r | #設定ファイル削除 |
#設定ファイルの書き方 分 時 日 月 曜日 コマンド # 例1 毎日3時間おきにjob01.shを実行 * */3 * * * job01.sh # 例2 月~水曜日の15:00と17:00にjob02.shを実行 * 15,17 * * 1-3 job02.sh
設定ファイル詳細 | |
---|---|
分 | 0~59までの数字 |
時 | 0~23までの数字 |
日 | 1~31までの数字 |
月 | 1~12までの数字 |
曜日 | 0~7までの数字(0と7=日曜,1=月曜,...) |
コマンド | スクリプトorコマンド |
TimemachineのターミナルコマンドでタイムマシンHDDがマウントされている場合のみ毎日24:00にバックアップを行うように設定します。
まずtmutil destinationinfo
コマンドを用いてHDDのIDを取得します、そしてtmutil startbackup --destination 調べたID
でバックアップを開始します。
# crontab -e 0 0 * * * /etc/cron.daily/backup.sh
#backup.sh #! /usr/local/bin/zsh if diskutil list | grep timemachine;then tmutil startbackup --destination FB2B288D-EA36-422C-96CA-0D9B0995706A else echo "I can't make backup file" > ./backup.log fi