Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

crontab(クロンタブ)とは | 意味や読み方など丁寧でわかりやすい用語解説

crontab(クロンタブ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。

作成日: 更新日:

読み方

日本語表記

クラウンタブ (クラウンタブ)

英語表記

crontab (クロンタブ)

用語解説

crontabは、UnixやLinuxなどのOSにおいて、特定のコマンドやシェルスクリプトを定期的に自動実行するための機能である。システム管理者は、繰り返し行うバックアップ処理やログファイルの整理、アプリケーションが定期的に必要とするデータ更新など、様々な定型作業をcrontabに登録することで、手動操作の手間を省き、システム運用を効率化できる。この自動実行システムは「cron」という名前のサービス(デーモン)によって提供されており、crontabという言葉は、cronサービスが参照する「スケジュール設定ファイル」そのもの、またはその設定ファイルを操作するための「コマンド」の両方を指す場合がある。

crontabの仕組みは、cronサービスがシステム起動時から常にバックグラウンドで動作し続けることで成り立っている。このcronデーモンは、通常1分ごとにシステム内のcrontabファイルをチェックし、ファイルに記述されたスケジュールと現在の時刻を比較する。もしスケジュールされた時刻と一致するジョブ(タスク)があれば、cronはそのジョブに指定されたコマンドやスクリプトを自動的に実行する。これにより、ユーザーは一度設定を完了すれば、あとは意識することなくタスクが実行される環境を構築できる。

crontabファイルにジョブを記述する際の書式は特定のルールに従う。各行は一つのジョブを表し、大きく分けて「時間指定」と「実行コマンド」の二つの部分から構成される。時間指定は5つのフィールドで表現され、それぞれが「分」「時」「日」「月」「曜日」を意味する。

  1. : 0から59までの数値。
  2. : 0から23までの数値。
  3. : 1から31までの数値(月の何日目か)。
  4. : 1から12までの数値(またはjan, febなどの月の略称)。
  5. 曜日: 0から7までの数値(0または7が日曜日、1が月曜日、2が火曜日といった具合)。

これらのフィールドには数値の他に、特別な意味を持つ記号を使用できる。*(アスタリスク)は「全ての値」を意味し、例えば時フィールドが*であれば「毎時」を意味する。-(ハイフン)は範囲を指定し、9-17であれば「午前9時から午後5時まで」となる。,(カンマ)は複数の値を指定し、1,15であれば「1日と15日」を意味する。/(スラッシュ)はステップ値を指定し、*/5であれば「5分ごと」に実行するという意味になる。

時間指定の後に続くのが、実際に実行したいコマンドやスクリプトのパスである。例えば、0 3 * * * /usr/local/bin/backup.shという記述は、「毎日午前3時0分に/usr/local/bin/backup.shというシェルスクリプトを実行する」という意味になる。

crontabファイルを操作するためのコマンドも用意されている。

  • crontab -e: 現在のユーザーのcrontabファイルを編集するコマンドである。これを実行すると、設定されているデフォルトのエディタが開き、その中でスケジュールを記述・保存すると、cronサービスが変更を自動的に検知して新しい設定を適用する。
  • crontab -l: 現在のユーザーのcrontabファイルの内容を表示するコマンドである。現在設定されている自動実行タスクを確認する際に利用する。
  • crontab -r: 現在のユーザーのcrontabファイルを削除するコマンドである。このコマンドを実行すると、設定されていた全ての自動実行タスクが停止する。誤って実行しないよう注意が必要である。

crontabでコマンドを実行する際にはいくつかの注意点がある。第一に、crontabによって実行されるコマンドは、対話的にシェルから実行する場合とは環境変数が異なることが多い。特にPATH環境変数は最小限しか設定されていないため、実行したいコマンドはフルパス(絶対パス)で指定するか、スクリプトの冒頭で明示的にPATHを設定する必要がある。

第二に、cronジョブは通常、標準出力や標準エラー出力に何も表示しない。しかし、エラー発生時などにその情報を確認できるように、出力をログファイルにリダイレクトすることが強く推奨される。例えば、command > /var/log/myjob.log 2>&1と記述することで、標準出力と標準エラー出力を/var/log/myjob.logという一つのログファイルに記録できる。ジョブの出力が全く不要な場合は、/dev/nullにリダイレクトすることで出力を破棄できる。

第三に、crontabは各ユーザーごとに設定できるが、システム全体に関わる定期実行タスクは/etc/crontabファイルや/etc/cron.dディレクトリ下のファイル、または/etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthlyといった特定のディレクトリにスクリプトを配置する方法も存在する。これらは主にシステム管理者のみが変更可能であり、より広範なシステムメンテナンスや管理タスクに用いられる。初心者システムエンジニアは、まず自分自身のユーザー権限でcrontab -eコマンドを使って設定することから始めるのが一般的である。

このように、crontabはシステムエンジニアにとって非常に強力なツールであり、その使い方と注意点を理解することは、効率的で安定したシステム運用に不可欠である。

関連コンテンツ

関連IT用語