Furudateのブログ

プログラミングやネットワーク系の知識・技術がメインのブログ。技術メモ帳的な感じになるかと。岩手から発信していきます。

crontabの書き方と安全な使い方

こんばんは。

今回、何気に今までcrontabをあまり使っていなかったので、その使い方とかをまとめてみたいと思います。

cronとは

cronはUNIX系のデーモン(常駐プログラム)の一種で、ユーザが設定したスケジュールに基づいて指定したコマンドとかを自動で実行してくれるものです。
つまり、定期的に決められた時間にプログラムを実行したいとき、使うものです。
その時間帯について、何時(何日とかも)に実行するのかを指定するのを書くものが、crontabファイルになります。

ちなみにMac(OS X)にはlaunchdというのがあり、Macの場合はこっちを使ったほうが良いみたいです。

launchdの使い方についてはこちらの記事で。

crondが起動しているか確認

さて、まずはcrondが起動しているか確認します。
デフォルトでは起動しているはずです。
確認する方法は以下の通りです。

$ /etc/rc.d/init.d/crond status
crond (pid  xxxx) を実行中...

上記のようになっていれば起動しています。
もし起動していない場合はstartとかで起動してください。


crontabファイルの使い方と運用

crontabファイルはユーザ毎にファイルを持ち、/var/spool/cron/userに保存されています。
このファイルを直接編集することも可能ですが、普通はcrontabコマンドを使って編集します。

crontabコマンドの使い方とオプションは以下の通りです。

crontab [-u user] file
  または
crontab [-u user] [-e | -l | -r | -i]
オプション 内容
u 対象となるユーザを指定
e エディタを起動し、crontabの設定を編集する
l crontabの内容を確認
r crontabの内容を削除
i 確認プロンプトを表示(rと併用)

よく使うのは u, e, lでしょうか。
で、実際にcrontabを編集する場合はeオプションでやることになるわけですが、本当はeオプションで編集していくというやり方はやらないほうが良いみたいです。
なぜかと言うと、削除をするのはrオプションですが、rとeがキーボードで隣同士にあり、間違って消してしまう可能性があるからです。

よって、これを防ぐために色々なやり方があるわけですが、私はeオプションを使わず、常に外部ファイルを読み込ませるようにしています。

crontab cron.txt

上記のようにするとcron.txtに書いた内容が設定されます。
よって、このcron.txtに設定を書いていくようにします。

crontabファイルの書き方

crontabは以下のように書きます。
分 時 日 月 曜日 <コマンド>
曜日は0と7が日曜日になり、数値で設定します。

また、以下の様な書き方も出来ます。

記号 内容
-(ハイフン) 範囲指定 5-10とすると5~10分の毎分コマンドが実行
* 全範囲 分フィールドに*とした場合は毎分実行
,(カンマ区切り) リスト指定 1,3,5-10とすると1,3,5分と10分までの毎分コマンドが実行
/ 間隔値指定 5-10/2とすると5~10分の間を2分間隔で実行し、*/5だと5分おきに実行

よく使う設定例は以下の様な感じですかね。

00 00 * * * /home/username/test.sh // 毎日0時に実行
* * * * * /home/username/test.sh // 毎分実行

もっと他に色々細かい話があるんですけどそれは何かあったら書こうと思います。基本的にはこれまで書いた内容で使えるはずです。

それでは。

参考にさせていただいたサイト

crontab使い方まとめ。 - ばくのエンジニア日誌
crontab -e は「絶対に」使ってはいけない - ろば電子が詰まっている