LinuxやUnixで「定期的に作業を処理すること」といえば思い浮かぶのが、crontabです。システムが自動で繰り返し作業を行ってくれるなんて、とても安心です!しかし、よく知らないと頭を悩ませる存在でもあり、天使と悪魔の両方を抱えているようなものです。私が何度もcrontabと格闘しながら気づいたことをもとに、crontabとは何か、どのように使うか、そしていくつかの活用法を共有します。

crontabの正体とは?

crontabは簡単に言えば、LinuxやUnixシステムで「特定の作業を自動的に、定期的に実行するように予約する」ためのツールです。この設定を使って、私は毎日、毎週、毎月繰り返される退屈な作業を簡単に処理できるようになります。設定さえしておけば、私の代わりに無心で作業をしてくれるので、システムがまるで私の個人秘書のように感じられます。

これを可能にしているのがcronデーモンです。cronデーモンはcrontabファイルに記載された内容を確認し、指定された時間にコマンドを実行します。これが私がcrontabを好んで使う理由です。

crontabコマンドとは?

crontabにはいくつかの便利なコマンドがあります。これをよく知っておくことで、時間を節約できるだけでなく、簡単に設定を確認したり修正したりできます。

  • crontab -e : crontabファイルを開き、作業を追加または修正できます。
  • crontab -l : 現在のユーザーのcrontabファイルの内容を表示します。
  • crontab -r : 現在のユーザーのcrontabファイルを削除します。 (慎重に扱ってください)

crontabファイルの形式はどのようになっているか?

crontabファイルは、各作業ごとに1行で構成され、各行は5つの時間フィールドと1つのコマンドから成ります。このフィールドが何を意味するのかを見ると初めは混乱しますが、1つずつ見ていくと意外と簡単です。

*  *  *  *  * /path/to/command
-  -  -  -  -
|  |  |  |  +----- 曜日 (0 - 7) (日曜日が0または7)
|  |  |  +------- 月 (1 - 12)
|  |  +--------- 日 (1 - 31)
|  +----------- 時 (0 - 23)
+------------- 分 (0 - 59)

各フィールドには数字や*が入りますが、*はすべての値を意味します。例えば* * * * *は「毎分、毎時、毎日、毎月、毎曜日に実行する」という意味です。つまり、毎分ごとに実行されるのです。これを適切に活用すれば、本当に多様なスケジューリングが可能です。

5分ごとに作業を実行する: crontabの例

例えば、*/5 * * * * /path/to/myscript.shというコマンドがあります。この設定は、myscript.shというスクリプトを毎5分ごとに実行するという意味です。

  • */5 : 毎5分ごと
  • * : すべての時間を意味します
  • * : すべての日を意味します
  • * : すべての月を意味します
  • * : すべての曜日を意味します

つまり、1日に24時間の間に毎5分ごとにこのスクリプトが実行されるわけです。気にする必要なく定期的に動くように設定されているので、考えるだけでも便利です!

crontab使用法の説明

さまざまな活用例

様々な状況に応じてcrontabを設定することができます。いくつかの例を通じて、どのように使えるか見てみましょう。

  1. 毎時スクリプト実行
    0 * * * * /path/to/script.sh
    毎時0分にスクリプトを実行します。例えば、12:00、13:00、14:00…
  2. 毎日午前3時にバックアップ作業を実行
    0 3 * * * /path/to/backup.sh
    毎日午前3時にバックアップを実行することで、残業する必要が減るかもしれません。
  3. 毎月1日と15日午前2時に実行
    0 2 1,15 * * /path/to/script.sh
    大事な作業を毎月初めと中旬に定期的に実行するのも良いでしょう。
  4. 週末のみ実行
    30 8 * * 6,7 /path/to/weekend_script.sh
    毎週土曜日と日曜日の午前8時30分にスクリプトを実行する設定です。

crontab設定時に知っておくと良い事項

Linuxでのcrontab作業は、システムが再起動された後も維持されます。ただし、一つ注意が必要な点があります。もしシステムがオフの時間に予約された作業であれば、実行されません。例えば、毎日午後3時に実行するように設定していた場合、システムがオフになっていて4時にオンになったら、その日午後3時の作業はスキップされます。

こうした問題を解決するにはanacronという友達を使うことができます。anacronはシステムがオフでも「逃した作業」を実行してくれるツールです。crontabの限界を補うため、定期的に必ず実行する必要がある作業があるときに便利です。


crontabを上手に活用すれば、私にとって大きな助けになります。スケジュール管理を通じて重要な作業を自動化すれば、時間を節約できるだけでなく、ミスも減らすことができます。もちろん最初は形式のために難しく見えるかもしれませんが、一度慣れてしまえば手放せない便利さが待っています。この文章を読んでcrontabの世界に足を踏み入れてみてはいかがでしょうか?