実践で使えるcrontabの書き方・設定方法をわかりやすく説明する【Ubuntu】

実践で使えるcrontabの書き方・設定方法をわかりやすく説明する【Ubuntu】 サーバー

この記事では、実践で使えるcrontabの書き方・設定を説明しています。
結論から言うと、crontabなんて簡単に書けます。

だから、覚えることはとても少ないです。
何なら覚える必要すらありません。

実際、crontabを設定する機会なんて多くありません。
そのため、覚えていないエンジニアも結構いるほどです。
これは本当です。

本記事の内容

  • crontabの書き方・設定方法
  • 実際にcrontabに書く設定

それでは、上記に沿って解説していきます。

crontabの書き方・設定方法

まずは、具体例から確認しましょう。
これは、実際のcrontabから抽出してきました。

05 1 * * * /root/backup.sh

上記は、毎日1時05分にLinux上でバックアップするためのスクリプトを起動させています。
では、次の書式を確認します。

crontabを記述する書式は以下。

# cron起動時間設定
* * * * * [実行コマンド]
| | | | |
| | | | |- 曜日
| | | |--- 月
| | |----- 日
| |------- 時
|--------- 分

実行コマンドと書いていますが、ここはファイルのパスだと覚えてください。
実際の運用では、ファイルに処理を書くことがほとんどです。
ここで言うファイルは、以下。

  • シェルスクリプト
  • プログラムファイル(PHP、Pythonなどなど)

各フィールドに設定可能な値は以下。

フィールド設定可能な数値補足
0-59
0-23
1-31
1-12
曜日0-70=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日

なお、「*」(アスタリスク)は各フィールドで設定可能な全ての値を表しています。
例えば、冒頭で挙げた設定を確認しましょう。

05 1 * * * /root/backup.sh

日、月、曜日が「*」です。
すべての日、すべての月、すべての曜日の1時05分を設定しています。
つまり、毎日1時05分ということです。

とりあえず、ここまでの内容を覚えればOKです。
これだけでもうcronの設定ができるようになります。

この知識をベースにして、実際にcrontabに書く設定を確認していきましょう。

実際にcrontabに書く設定

たくさん説明しても覚えられません。
そもそも、覚える必要なんてありません。

この記事では、以下の3パターンだけ覚えて帰ってください。

  • 1日1回
  • 間隔を設ける
  • 禁止時間帯

以下で説明していきます。

1日1回

05 1 * * * /root/backup.sh

バックアップは、基本的には1日1回です。
その場合の書き方となります。

バックアップ以外では、不要ファイル削除なども1日1回が多いですね。
この書き方さえ知っていれば、とりあえずバッチ処理を実現できます。

crontabにおける設定の、50%以上は1日1回指定ではないでしょうか?
私の場合は、8割ほどがこの書き方となります。

間隔を設ける

*/5 * * * * /root/check.sh

5分に1回、check.shが起動します。

常時監視する場合には、この書き方になります。
この書き方も多いです。

「*/数値」という表現により、間隔を設定できます。
もちろん、分以外にも指定可能です。

0 */3 * * * /root/check.sh

上記の場合なら、3時間毎に1回起動します。
「1日1回」と「間隔を設ける」だけで、ほぼ9割ぐらいではないでしょうか?

禁止時間帯

* 0-3,6-23 * * * * /root/access.sh

毎日0時から3時と6時から23時は、access.shを起動させます。
これは、逆に言えば以下。
「夜中4時から6時までは、access.shは起動させない(禁止)」

このcrontabの書き方は、どのような場合に必要となるのか?
メンテナンス時間を避ける場合などですね。

何気に「-」と「,」が出てきました。
「-」は範囲指定です。
「,」はorだと覚えてください。

「,」だけで上記を表現してみましょう。

* 0,1,2,3,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 * * * * /root/access.sh

極端な話「-」は覚えなくても大丈夫です。
でも、こんなに書くの嫌ですよね。
嫌な場合は、「-」もついでに覚えましょう。

ただ、個人的には「,」と「-」はそんなに使いません。
大抵は、「1日1回」と「間隔を設ける」でカバーできます。

面倒なら、「禁止時間帯」(「,」と「-」による複数指定も含む)は覚えなくてもいいです。
頭の片隅に入れておくだけでも、十分です。
本当に必要な場合に、Googleで検索すれば問題ありません。

タイトルとURLをコピーしました