Macでcron。

2016.09.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

cronは指定した日時にコマンドをやスクリプトを実行するもので、crontabコマンドを使用する事で実現できます。
バッチ処理で使うことが有るので備忘録として書いておきます。

環境

Mac OSX 10.9.5 Mavericks

準備

環境変数にエディタを登録

ターミナルから下記を入力。

$ export EDITOR=vim

これでcrontab編集時はvimが起動し、初回は下記が表示されます。

crontab: installing new crontab

登録せずにcrontabで編集しても下記の様なエラーで保存できません。

crontab: "/usr/bin/vi" exited with status 1

crontab

オプション

-e crontabファイルの編集。
-r crontabファイルの削除。
-l crontabファイルの閲覧。
-u ユーザー名 ユーザー名を指定してcrontabファイルを操作。rootのみ実行可能。

ファイルの編集にはオプションの代わりに絶対パスを指定する事も可能です。
間違えて-rを付けるとファイル削除となってしまうので、オプションを使用しない方法が良しとされる意見も有る様ですね。

crontabファイルの編集

書式

分 時 日 月 曜日 コマンド

使用例1

オプション「-e」で編集します。

$ crontab -e

エディターに設定しているvimで開くので、こんな風に書いてみました。

#練習
0 10 1 * * ls -l

「#」を付けるとその行はコメント扱い。
意味は「毎月1日の10:00にコマンドls -lを実行する」。
「*(ワイルドカード)」は全てを表します。

使用例2

次はこんな風に書いてみました。

0/15 10-13,15,17 1 * sun ls -l

意味は「毎月1日が日曜の場合、10〜13時と15時と17時に、0分から15分間隔でコマンドls -lを実行」。
「/」「-」「,」を使用する事で自在に操れます。

詳細

記述は0〜59。
記述は0〜23。
記述は1〜31。
記述は1〜12。jan、feb...でも可能。
曜日 記述は0〜7。0が日曜、1が月曜...7も日曜。sun、mon...でも可能。

実行

設定した日時が来るとコマンドが実行され、そのログファイルがフォルダ「/var/mail/」にユーザー名で作成されます。
下記コマンドで内容を確認できます。

$ cat /var/mail/ユーザー名

さいごに

これでコマンドやファイルを定期的に実行する事ができるようになりました。
シェルスクルリプトを複数設定して順に実行するなどの使い方が簡単にできるのは嬉しいですね。